我在RStudio Shiny服务器页面上使用了DataTables,并且在下面的示例中使TableTools和ColReorder正常工作,但是ColVis(“显示/隐藏列”按钮)的行为与http://datatables.net/extensions/colvis/中的示例不同:
单击“显示/隐藏列”按钮时,列表会与下面的表格值混合,我无法通过再次单击按钮或单击页面上的任何其他位置来使列表消失(同样,在datatables页面上的示例行为正确)。
有什么想法吗?
此外,列排序和列重排存在问题: 如果先进行排序,然后重新排列列并再次排序,则列标题会翻转。例如,按列深度排序,然后将第一列向左移动,再次点击标题进行排序,现在我们得到了从错误列中获取内容的深度标题。见快照:
单击“显示/隐藏列”按钮时,列表会与下面的表格值混合,我无法通过再次单击按钮或单击页面上的任何其他位置来使列表消失(同样,在datatables页面上的示例行为正确)。
sDom
来排序表格中的不同元素感到困惑。我希望 显示/隐藏列
按钮位于右上角而不是左上角。我也不确定如何在表格的 sDom
中排序不同的元素,以便在更改列的顺序、保存为 CSV/Excel 或隐藏某些列后,可以获得新的表格布局而不是原始布局。有什么想法吗?
ui.R
shinyUI(pageWithSidebar(
h1('Diamonds DataTable with TableTools'),
tagList(
singleton(tags$head(tags$script(src='//cdnjs.cloudflare.com/ajax/libs/datatables/1.9.4/jquery.dataTables.min.js',type='text/javascript'))),
singleton(tags$head(tags$script(src='//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/js/TableTools.min.js',type='text/javascript'))),
singleton(tags$head(tags$script(src='//cdn.datatables.net/colreorder/1.1.1/js/dataTables.colReorder.min.js',type='text/javascript'))),
singleton(tags$head(tags$script(src='//cdn.datatables.net/colvis/1.1.0/js/dataTables.colVis.min.js',type='text/javascript'))),
singleton(tags$head(tags$script(src='//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/js/ZeroClipboard.min.js',type='text/javascript'))),
singleton(tags$head(tags$link(href='//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/css/TableTools.min.css',rel='stylesheet',type='text/css'))),
singleton(tags$script(HTML("if (window.innerHeight < 400) alert('Screen too small');")))
),
dataTableOutput("mytable")
)
)
server.R
shinyServer(function(input, output, session) {
output$mytable = renderDataTable({
diamonds[,1:6]
}, options = list(
"sDom" = 'RMDCT<"clear">lfrtip',
"oTableTools" = list(
"sSwfPath" = "//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/swf/copy_csv_xls.swf",
"aButtons" = list(
"copy",
"print",
list("sExtends" = "collection",
"sButtonText" = "Save",
"aButtons" = c("csv","xls")
)
)
)
)
)
})
此外,列排序和列重排存在问题: 如果先进行排序,然后重新排列列并再次排序,则列标题会翻转。例如,按列深度排序,然后将第一列向左移动,再次点击标题进行排序,现在我们得到了从错误列中获取内容的深度标题。见快照:
sDom
选项。然后小部件应该正确显示。但是,小部件会更改DOM中的对象,因此您可能需要合并对Shiny.unbindAll()
和Shiny.bindAll()
的调用,请参见https://groups.google.com/forum/#!msg/shiny-discuss/IE6aQfKXd1I/M_IpbLUUG9AJ - jdharrisonShiny.unbindAll()
和Shiny.bindAll()
的调用应该相对于表格的哪里进行? - 719016