没有拉伸的闪亮应用程序的renderDataTable中的列宽

gja*_*bel 7 r datatables shiny

我想获得一个DataTable(包括其所有排名,搜索和页面功能),它不会在整个页面中完全展开,并导致每列中有大量的空白区域......

在此输入图像描述

...理想情况下,列宽类似于"包裹"样式renderTable...

在此输入图像描述

我知道我可以修复相对列宽,但是,我的表将根据所选输入的不同数量的列动态更新.我希望其他列扩展到右侧的空白区域,然后如果它变得比浏览器窗口宽度宽,则触发水平滚动条.

上图中表格的可重复示例......

library(shiny)
runApp(list(
  ui = navbarPage(
  title = 'Tables',
  tabPanel('dataTableOutput', dataTableOutput('ex1')),
  tabPanel('tableOutput', tableOutput('ex2'))
),
server = function(input, output) {
  output$ex1 <- renderDataTable(iris)
  output$ex2 <- renderTable(iris)
}
))
Run Code Online (Sandbox Code Playgroud)

Mah*_*iha 8

我认为你应该drawCallback在dataTables中使用.在这里,我只是将您的示例稍微更改为将dataTable的宽度修复为600px.你可以在回调函数中使用可能的java脚本函数来做几乎任何事情.

library(shiny)
runApp(list(
  ui = navbarPage(
    title = 'Tables',
    tabPanel('dataTableOutput', dataTableOutput('ex1')),
    tabPanel('tableOutput', tableOutput('ex2'))
  ),
  server = function(input, output) {
    output$ex1 <- renderDataTable( iris, 
                                   option = list( drawCallback = I("function( settings ) {document.getElementById('ex1').style.width = '600px';}")) )
    output$ex2 <- renderTable(iris)
  }
))
Run Code Online (Sandbox Code Playgroud)