是否有任何方法,在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)
)
}
))