【问题标题】:How to get DT::datatable to update when hidden如何在隐藏时更新 DT::datatable
【发布时间】:2016-11-25 15:36:55
【问题描述】:

datatables 隐藏在 Shiny 中时,它们似乎不会更新,即使使用了 outputOptions(output, 'tableID', suspendWhenHidden=FALSE)。下面是一个 MRE。如果隐藏datatable,然后添加或删除行,然后显示datatable,您会看到它没有更新。但是,一旦您修改了可见的datatable,所有过去的更改都会“赶上”它。我们如何强制datatables 在隐藏时重新绘制自己?

#ui
shinyUI(
  #tags$head(tags$script(src="main.js")),
  fluidPage(    
    titlePanel("Modifying Hidden Datatable"),
    sidebarLayout(      
      sidebarPanel(
        actionButton("decrease", "Decrease Row Number"),
        actionButton("increase", "Increase Row Number"),
        actionButton("hide", "Hide Data Table"),
        actionButton("show", "Show Data Table")
      ),
      mainPanel(
        tags$head(tags$script(src="main.js")),
        DT::dataTableOutput("df")  
      )
    )
  )
)

#server
library(shiny)
library(DT)

shinyServer(function(input, output, session) {

  values = reactiveValues(n = 1)

  observeEvent(input$decrease, {
    values$n = values$n - 1
    if (values$n == 0) values$n = 1
  })

  observeEvent(input$increase, {
    values$n = values$n + 1
    if (values$n > nrow(mtcars)) values$n = nrow(mtcars)
  })

  output$df = renderDataTable({
    df = mtcars[1:values$n, ]
    DT::datatable(df)
  })
  outputOptions(output, "df", suspendWhenHidden=FALSE)
})

#javascript
$(document).ready(function() {
  $('#hide').click(function() {
    $('#df').hide();
  });
  $('#show').click(function() {
    $('#df').show();
  });
});

【问题讨论】:

    标签: r datatable shiny


    【解决方案1】:

    事实证明,如果您已经在使用 Javascript,您只需调用桌面上的draw 函数即可。以下 Javascript 代码应该可以工作:

    $(document).ready(function() {
      $('#hide').click(function() {
        $('#df').hide();
      });
      $('#show').click(function() {
        $('#df').show();
        $("#df table").DataTable().draw();
      });
    });
    

    【讨论】:

      猜你喜欢
      • 2019-06-16
      • 2016-05-23
      • 1970-01-01
      • 2015-04-20
      • 2019-12-19
      • 2015-04-20
      • 1970-01-01
      • 2020-06-20
      • 1970-01-01
      相关资源
      最近更新 更多