Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 选择过滤行的自定义按钮_Javascript_R_Shiny_Dt - Fatal编程技术网

Javascript 选择过滤行的自定义按钮

Javascript 选择过滤行的自定义按钮,javascript,r,shiny,dt,Javascript,R,Shiny,Dt,我想在下面的最小可复制示例中包括自定义按钮作为data.table的扩展。这个例子基本上就是从这个例子中提取出来的 由于我的应用程序中有几个data.table,因此我尝试使用函数var table=$this.api.table.node.DataTable;,在按钮的操作定义的JS代码中泛化节点;,这是行不通的。如果我插入var table=$'DataTables\u table\u 0'。DataTable;它工作正常,但不再是通用的 非常感谢您的帮助 library(shiny) li

我想在下面的最小可复制示例中包括自定义按钮作为data.table的扩展。这个例子基本上就是从这个例子中提取出来的

由于我的应用程序中有几个data.table,因此我尝试使用函数var table=$this.api.table.node.DataTable;,在按钮的操作定义的JS代码中泛化节点;,这是行不通的。如果我插入var table=$'DataTables\u table\u 0'。DataTable;它工作正常,但不再是通用的

非常感谢您的帮助

library(shiny)
library(DT)

ui <- fluidPage(

  titlePanel("Select only filtered rows using selectall button"),

  br(),
  br(),

  DT::dataTableOutput("tableTest")
)

# Define server logic required to draw a histogram
server <- function(input, output) {

  output$tableTest <- DT::renderDataTable({

    datatable(mtcars,
      escape = F,
      rownames = F,
      filter = 'top',
      class = "compact hover row-border",
      extensions = c('Scroller', 'Select', 'Buttons'),

      options = list(
        select = list(style = "multi", items = "row"),
        columnDefs = list(list(className = 'dt-center', targets = "_all")),
        language = list(info = 'Showing _START_ to _END_ of _TOTAL_ variables'),
        deferRender = TRUE,
        scrollY = 500,
        scroller = TRUE,
        dom = "Blfrtip",
        buttons =
          list(
            list(extend='selectAll',
              className='selectAll',
              text="select all rows",
              action = DT::JS(
                "function () {
                var table = $(this.api().table().node()).DataTable();
                table.rows({ search: 'applied'}).deselect();
                table.rows({ search: 'applied'}).select();
              }")
            ),
            list(extend='selectNone',
              text="DeselectAll",
              action = DT::JS(
                "function () {
                var table = $(this.api().table().node()).DataTable();
                table.rows({ search: 'applied'}).select();
                table.rows({ search: 'applied'}).deselect();
              }")
            ))
      ),
      selection = "none"
    ) }, server = F
  )
}

# Run the application
shinyApp(ui = ui, server = server)



我没有试过,但我认为你可以做到:

action = JS(
  "function(e, table, node, config) {",
  "  table.rows({ search: 'applied'}).deselect();",
  "  table.rows({ search: 'applied'}).select();",
  "}"
)

我没有试过,但我认为你可以做到:

action = JS(
  "function(e, table, node, config) {",
  "  table.rows({ search: 'applied'}).deselect();",
  "  table.rows({ search: 'applied'}).select();",
  "}"
)

我已经测试过了,非常感谢!我已经测试过了,非常感谢!