2017-02-17 2 views
1

Я хотел бы добавить еще один ряд в ответ публикуемого здесь:возвращение значения из DT с JavaScript

Determine if DT datatable is clicked in shiny app

В частности, я хочу, чтобы вернуть «в» поле строки, который щелкнул так Я добавил

вар а = table.rows [строка] _. клеток [Col] .innerHTML

, но ничего не происходит.

Вот код. Является ли это возможным?

library(shiny) 
library(DT) 
runApp(shinyApp(
    ui = fluidPage(DT::dataTableOutput('table')), 
    server = function(input, output, session) { 
    output$table <- DT::renderDataTable({ 
     datatable(data.frame(a = c(1,2),b=c(2,3)), rownames = FALSE, selection = 'none', callback = JS("table.on('click.dt', 'td', function() { 
      var row_=table.cell(this).index().row; 
      var col=table.cell(this).index().column; 
      var rnd= Math.random(); 
      var a = table.rows[row_].cells[col].innerhtml 
      var data = [row_, col, rnd,a]; 
      Shiny.onInputChange('rows',data); 
    });") 
    )} 
    ) 

    observeEvent(input$rows, { 


     print(input$rows) 
     #print(Sys.time()) 

    })} 
)) 

спасибо.

ответ

2

Если вы хотите посмотреть на щелчках из строк, можно использовать следующую функцию обратного вызова:

callback=JS("table.on('click.dt', 'tr', function() { 
    var data=table.row(this).data(); 
    Shiny.onInputChange('rows',data[0]); 
});") 

Это смотрит на событиях щелчка на строке (tr) и получает данные непосредственно возвращает значение в первая колонка.

Смежные вопросы