问题描述
我正在尝试更改 DT::datatable 中某些列的宽度,不幸的是,仅当数据中的列数较少时,才使用 columnDefs 选项才有效。
当我将所有列添加到我的数据中时,列宽不再遵循我在 columnDefs 选项中的设置。
这是一个例子,你可以看到第一个表格的宽度都是恒定的,而在第二个表格中,我已经能够根据需要手动设置宽度。删除 scrollX 参数也不起作用,考虑到我的数据的列数,我需要它。
library(MASS)
library(shiny)
library(DT)
ui <- fluidPage(
mainPanel(
DT::dataTableOutput("table1"),br(),DT::dataTableOutput("table2")
)
)
server <- function(input,output) {
output$table1 <- DT::renderDataTable({
DT::datatable(
Cars93[,-(20:27)],rownames = FALSE,options = list(
pageLength = 5,autowidth = TRUE,scrollX = TRUE,searching = TRUE,ordering = TRUE,paging = TRUE,columnDefs = list(list(width = "200px",targets = c(0:2)),list(width = "20px",targets = 3),list(width = "50px",targets = 4))
)
)
})
output$table2 <- DT::renderDataTable({
DT::datatable(
Cars93[,-(6:27)],options = list(
pageLength = 5,targets = 4))
)
)
})
}
shinyApp(ui,server)
我需要在我的代码中更改什么才能在第一个表中设置列宽,就像在第二个表中一样,同时拥有所有列和 scrollX?
谢谢
解决方法
试试:
ui <- fluidPage(
tags$head(
tags$style(
HTML("table {table-layout: fixed;}")
)
),......
并将 autowidth
替换为 autoWidth
。