在Shiny中单独搜索列表(选择输入)renderDatatable()

时间:2014-12-25 19:12:42

标签: javascript jquery r datatables shiny

我正在尝试使用闪亮应用程序中的数据表进行单列搜索(选择输入)

点击此链接后,http://www.datatables.net/examples/api/multi_filter_select.html我尝试将必要的javascript代码添加到我闪亮的应用程序的server.R文件中的R代码中。

据我所知,默认情况下,renderDataTable有单独的搜索框,我使用searching = FALSE关闭,然后在上面提到的链接中传递js函数作为renderDataTable代码中的回调。

callback = "initComplete: function (oTable) {
  var api = this.api();
  api.columns().indexes().flatten().each( function ( i ) {
    var column = api.column( i );
    var select = $('<select><option value=\"\"></option></select>')
    .appendTo( $(column.header()).empty() )
    .on( 'change', function () {
      var val = $.fn.dataTable.util.escapeRegex(
        $(this).val()
      );
      column
      .search( val ? '^'+val+'$' : '', true, false )
      .draw();
    } );
    column.data().unique().sort().each( function ( d, j ) {
      select.append( '<option value=\"'+d+'\">'+d+'</option>' )
    } );
  } );
}"

当我使用上面的代码运行应用程序时,没有更改反映在Shiny应用程序中。由于I()块中的各种引号,我通过添加转义序列解决(或没有)解决了错误。

1 个答案:

答案 0 :(得分:0)

以防万一其他人也在寻找这个:

在这里,您可以找到有关在特定列上使用过滤器的示例:

http://shiny.rstudio.com/gallery/datatables-options.html

server.R

在这种情况下,只有我的第1列底部有一个搜索框。

   output$mytable <- renderDataTable(df, options = list(
                        columnDefs = list(list(targets = c(2,3, 4,5,6,7) - 1, searchable = FALSE)),
                        pageLength = 10

                ))