r语言 - 自动滚动到数据表的右侧



是否有任何方法,在R Shiny中,在渲染时将滚动条从数据表自动设置为右侧(即到最后一列),而不是默认设置的左侧?

基本示例:

library(shiny)
runApp(shinyApp(
ui = fluidPage(
DT::dataTableOutput("results", width = 300)
),
server = function(input, output, session) {
output$results <- DT::renderDataTable(
mtcars,
options = list(scrollX = TRUE, bPaginate = F)
)
}
))
library(shiny)
runApp(shinyApp(
ui = fluidPage(
tags$div(id = "parent",
DT::dataTableOutput("results", width = 300)
),
tags$style("
#parent {direction: rtl; max-height: 80vh; overflow: auto; margin: 0 auto} 
#results {direction: ltr; float: left}")
),
server = function(input, output, session) {
output$results <- DT::renderDataTable(
mtcars,
options = list(scrollX = TRUE, bPaginate = F)
)
}
))

编辑

这是你想要的:

library(shiny)
library(DT)
callback <- "
$('div.dataTables_scrollBody').animate({scrollLeft: '+=500'}, 1000);
"
runApp(shinyApp(
ui = fluidPage(
DTOutput("results", width = 300)
),
server = function(input, output, session) {
output$results <- renderDT(
datatable(
mtcars, 
callback = JS(callback),
options = list(scrollX = TRUE)
)
)
}
))

1000是1000ms,这是动画的持续时间。我不明白为什么+=300不够。

在ui中添加一行:tags$style('#results {direction: rtl;}')

library(shiny)
runApp(shinyApp(
ui = fluidPage(
DT::dataTableOutput("results", width = 300),
tags$style('#results {direction: rtl;}')
),
server = function(input, output, session) {
output$results <- DT::renderDataTable(
mtcars,
options = list(scrollX = TRUE, bPaginate = F)
)
}
))

最新更新