我在闪亮的应用中有一个数据表。设置stateSave = TRUE
会按升序或降序保留列的排序,但如果设置了过滤器参数(例如,cyl = 6:8),则不会保留。关于如何解决这个问题的任何想法?
示例代码如下:
require(shiny)
require(DT)
ui<-fluidPage(
column(12,
DT::dataTableOutput("mtcars_table")
)
)
server<-function(input,output,session)
{
output$mtcars_table <- DT::renderDataTable({datatable({mtcars},
options = list(pageLength = 50,
stateSave = TRUE
),
selection = "single", filter = "top", escape = FALSE)},
server = FALSE)
}
shinyApp(ui=ui, server=server)
答案 0 :(得分:1)
它仅适用于服务器端处理(设置server = TRUE
)。
不幸的是,因为您可能拥有更大的数据集,并且可能会导致性能问题。
原因很简单。不保存过滤器,而是保存过滤后的数据集。请注意,在刷新后,您仍然可以看到数据已正确过滤(使用服务器端处理),但过滤器本身不再显示。如果单击过滤器字段并注意到显示的范围/选择与过滤数据集的属性不匹配,则可以看到未存储。
对于服务器端处理,数据保留在服务器上。如果您过滤数据并刷新页面,数据仍将被过滤。但是,对于非服务器端处理,文档(?renderDataTable
)告诉您,“整个数据帧立即发送到浏览器”。再见过滤器:(。