如何使水平滚动条在 DT::datatable 中可见
How to make the horizontal scrollbar visible in DT::datatable
使用 R shiny 和 DT 包,我正在创建某些 tables。列数因用户输入而异且不固定。我已经包含了下面的代码片段来包含一个水平滚动条,这样当列数很大时,用户可以滚动浏览那些不直接可见的列。
server.R:
output$results <- DT::renderDataTable({
DT::datatable(data = datasetInput(),
options = list(scrollX = TRUE,...)
)
})
<code reduced for brevity>
使用上面的代码,水平滚动条一开始是不可见的,但当我点击一行并点击键盘上的向右箭头时出现。有没有什么方法可以在 table 启动后立即显示滚动条,无论我有多少列,我都可以使用鼠标指针拖动滚动条?
更新:
我尝试了下面答案中的代码,这是我所看到的 - 没有水平滚动条。
我认为如果您不需要滚动条,您不能(或应该)轻易地强制使用滚动条,但上面的代码对我来说工作正常,它在页面初始化时显示滚动条。也许问题出在数据或其他方面。
这是一个在页面加载时具有水平滚动条的最小示例
runApp(shinyApp(
ui = fluidPage(
DT::dataTableOutput("results", width = 300)
),
server = function(input, output, session) {
output$results <- DT::renderDataTable(
mtcars,
options = list(scrollX = TRUE)
)
}
))
试试这个:
DT::datatable(sta, options = list(
pageLength=50, scrollX='400px'), filter = 'top')
我也会这样做:
datasetInput1 <- reactive({
infile <- input$file1
if(is.null(infile))
return(NULL)
else
m <- read.csv(infile$datapath, header = input$header)
return ( DT::datatable(m, extensions = 'Scroller', options = list(deferRender = F, dom = 't',
columnDefs = list(list(className = 'dt-center',
targets = 5)),
scrollY = 300, scroller = TRUE, scrollX = T,
pageLength = 5))
)
})
使用 R shiny 和 DT 包,我正在创建某些 tables。列数因用户输入而异且不固定。我已经包含了下面的代码片段来包含一个水平滚动条,这样当列数很大时,用户可以滚动浏览那些不直接可见的列。
server.R:
output$results <- DT::renderDataTable({
DT::datatable(data = datasetInput(),
options = list(scrollX = TRUE,...)
)
})
<code reduced for brevity>
使用上面的代码,水平滚动条一开始是不可见的,但当我点击一行并点击键盘上的向右箭头时出现。有没有什么方法可以在 table 启动后立即显示滚动条,无论我有多少列,我都可以使用鼠标指针拖动滚动条?
更新:
我尝试了下面答案中的代码,这是我所看到的 - 没有水平滚动条。
我认为如果您不需要滚动条,您不能(或应该)轻易地强制使用滚动条,但上面的代码对我来说工作正常,它在页面初始化时显示滚动条。也许问题出在数据或其他方面。
这是一个在页面加载时具有水平滚动条的最小示例
runApp(shinyApp(
ui = fluidPage(
DT::dataTableOutput("results", width = 300)
),
server = function(input, output, session) {
output$results <- DT::renderDataTable(
mtcars,
options = list(scrollX = TRUE)
)
}
))
试试这个:
DT::datatable(sta, options = list(
pageLength=50, scrollX='400px'), filter = 'top')
我也会这样做:
datasetInput1 <- reactive({
infile <- input$file1
if(is.null(infile))
return(NULL)
else
m <- read.csv(infile$datapath, header = input$header)
return ( DT::datatable(m, extensions = 'Scroller', options = list(deferRender = F, dom = 't',
columnDefs = list(list(className = 'dt-center',
targets = 5)),
scrollY = 300, scroller = TRUE, scrollX = T,
pageLength = 5))
)
})