2

我想在此处发布的答案中再添加一行:

确定是否在闪亮的应用程序中单击了 DT 数据表

具体来说,我想返回被点击的行的“a”字段,所以我添加了

var a = table.rows[row_].cells[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())

    })}
))

谢谢你。

4

1 回答 1

3

如果要查看行中的点击,可以使用以下回调函数:

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

这会查看行 ( tr) 上的点击事件并直接获取数据,然后返回第一列中的值。

于 2017-02-17T16:49:17.940 回答