我得到了一个带有 DataTables 的 RStudio Shiny 服务器页面,并且我得到了 TableTools 和 ColReorder 在下面的示例中工作,但是 ColVis(Show/hide columns
按钮)的行为方式与http://datatables.net/extensions/colvis/中的示例不同:
单击Show/hide columns
按钮时,列表与下表中的值混合在一起,我无法通过再次单击按钮或单击页面中的任何其他位置来使列表消失(再次,数据表页面中的示例行为正确)。
另外,我对使用sDom
表中的不同元素进行排序感到困惑。我希望Show/hide columns
按钮位于右上角而不是左上角。我也不确定如何对sDom
表格中的不同元素进行排序,以便在更改列的顺序后,保存到 CSV/Excel 或隐藏某些列会给我新的表格布局,而不是原来的布局。
有任何想法吗?
用户界面
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")
)
)
服务器.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")
)
)
)
)
)
})
#
此外,列排序和列重新排序存在问题:如果一个排序然后重新排序列并再次排序,则列标题会翻转。例如,按列深度排序,然后将第一列向左移动,然后再次单击标题进行排序,现在我们得到了标题深度以及来自错误列的内容。见快照: