响应用户输入的 Shiny DataTable 行选择
Shiny DataTable row selection responding to user input
我在通过用户输入选择 DataTable 中的行时遇到问题。我正在使用 Shiny 和 DT 的开发版本,因为行选择在非开发版本中不起作用。具体来说,我使用的是 Shiny ‘0.13.2.9004’ 和 DT ‘0.1.56’。考虑这个应用程序:
library(DT)
library(shiny)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
textOutput('row'),
numericInput('selectRow', 'selectRow', 3)
),
mainPanel(
DT::dataTableOutput('testTable')
)
)
)
server <- function(input, output, session) {
output$testTable <- DT::renderDataTable(iris,
selection = list(mode = 'single',
target = 'row',
selected = as.character(input$selectRow)),
server = TRUE)
}
shinyApp(ui = ui, server = server)
运行时,testTable
的第三行被选中,因为这是 selectRow
的默认值。但是更改 selectRow
的值对 testTable
中的行选择没有任何影响。漏洞?还是我做错了什么?
selected
选项仅对预选有效。要在创建 table 后更新选择,您需要使用 dataTableProxy
和 selectRows
。将以下内容添加到您的服务器代码中。
proxy = dataTableProxy("testTable")
observeEvent(input$selectRow, {
selectRows(proxy, as.numeric(input$selectRow))
})
我在通过用户输入选择 DataTable 中的行时遇到问题。我正在使用 Shiny 和 DT 的开发版本,因为行选择在非开发版本中不起作用。具体来说,我使用的是 Shiny ‘0.13.2.9004’ 和 DT ‘0.1.56’。考虑这个应用程序:
library(DT)
library(shiny)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
textOutput('row'),
numericInput('selectRow', 'selectRow', 3)
),
mainPanel(
DT::dataTableOutput('testTable')
)
)
)
server <- function(input, output, session) {
output$testTable <- DT::renderDataTable(iris,
selection = list(mode = 'single',
target = 'row',
selected = as.character(input$selectRow)),
server = TRUE)
}
shinyApp(ui = ui, server = server)
运行时,testTable
的第三行被选中,因为这是 selectRow
的默认值。但是更改 selectRow
的值对 testTable
中的行选择没有任何影响。漏洞?还是我做错了什么?
selected
选项仅对预选有效。要在创建 table 后更新选择,您需要使用 dataTableProxy
和 selectRows
。将以下内容添加到您的服务器代码中。
proxy = dataTableProxy("testTable")
observeEvent(input$selectRow, {
selectRows(proxy, as.numeric(input$selectRow))
})