r - R Shiny:如何从 DT 数据表的搜索框中获取用户输入?
问题描述
我已经开发了一个仪表板shiny
,shinydashboard
使用R
. 仪表板有一个datatable
随DT
包一起制作的。在表格的顶部,有一个搜索框,允许用户通过输入来过滤表格的行。是否可以获取此输入并将其用于仪表板其他地方的反应式表达式?
这是一个玩具示例:
library(shiny)
library(shinydashboard)
library(DT)
shinyApp(
ui = shinyUI(
dashboardPage(
dashboardHeader(title = "Example"),
dashboardSidebar(sidebarMenu(id = 'tabs', menuItem("Tab1", tabName = 'Tab1'))),
dashboardBody(tabItems(tabItem(tabName = "Tab1",
fluidRow(column(width=6,box(DT::dataTableOutput('myTable'), width=NULL)),
column(width=6,box(textOutput("myText"), width=NULL))))))
)
),
server = function(input, output, session){
mytbl <- data.frame(Name = c('Matthew', 'Luke', 'John'), Grade=c(45, 20, 80))
output$myTable <- DT::renderDataTable({DT::datatable(mytbl, rownames=FALSE)})
output$myText <- renderText({ "The value entered in the seach box should appear here!" })
}
)
解决方案
在datatable
函数中使用此回调:
callback = JS(
"table.on( 'search.dt', function () {",
"Shiny.setInputValue( 'search', table.search() );",
"} );"
)
然后在 Shiny 服务器中,您可以在反应变量中输入用户输入input$search
。
推荐阅读
- c# - Ajax.BeginForm 完成时在 cshtml 中调用 ac# 函数
- vue.js - 在哪里放置应用程序中通用的 VueJS 组件
- c++11 - 我可以使用 using 关键字进行部分模板专业化吗?
- python - 添加一个新列,其值基于 groupby 值另外两列
- spring - Serenity + Cucumber + Spring 输出字节码
- laravel-5 - 为什么 $request 不在 laravel 中添加或删除
- javascript - 如何在我的 AngularJS 项目中包含 Chart.js?
- r - 在 Windows 上从私有 gitlab 服务器安装包
- sql-server - 使用 BCP 将 CSV 文件导入 Azure SQL Server
- ios - 其他页面上的变量转换错误