我目前正在使用Shiny处理申请表。我的主页面将包含一个表格,该表格将有一个点击按钮,该按钮将打开一个新的模态窗口,显示应用程序表单的详细信息。单击保存按钮后,数据将存储在后端的数据库中。我已经使用mtcars给出了我的应用程序示例。
我的问题是两个人。
我已在主页面行中添加了复选框,并希望跟踪这些复选框的点击,以便我可以检查所需的复选框并使用他们的点击事件在数据库中保存其他值。如何跟踪此复选框点击事件?
我需要单击一个复选框,同时选中约150个或更多复选框。有没有办法在数组或其他东西中一起捕获所有这些点击事件,并在以后使用它们?
这是我的代码:
rm(list = ls())
library(DT)
library(shiny)
library(shinyBS)
library(shinyjs)
library(shinydashboard)
shinyInput <- function(FUN, len, id, ...) {inputs <- character(len)
for (i in seq_len(len)) {
inputs[i] <- as.character(FUN(paste0(id, i), ...))}
inputs
}
ui <- dashboardPage(
dashboardHeader(title = "Simple App"),
dashboardSidebar(
sidebarMenu(id = "tabs",
menuItem("Menu Item 1", tabName = "one", icon = icon("dashboard"))
)
),
dashboardBody(
tabItems(
tabItem(tabName = "one",h2("Datatable Modal Popup"),
DT::dataTableOutput('my_table'),uiOutput("popup")
)
)
)
)
server <- function(input, output, session) {
my_data <- reactive({
testdata <- mtcars
as.data.frame(cbind(View = shinyInput(actionButton, nrow(testdata),'button_', label = "View", onclick = 'Shiny.onInputChange(\"select_button\", this.id)' ),
Check = shinyInput(checkboxInput,label = "Check", nrow(testdata), 'box_', value = FALSE),testdata))
})
output$my_table <- DT::renderDataTable(my_data(),selection = 'single',options = list(searching = FALSE,pageLength = 10),server = FALSE, escape = FALSE,rownames= FALSE)
SelectedRow <- eventReactive(input$select_button,{
as.numeric(strsplit(input$select_button, "_")[[1]][2])
})
observeEvent(input$select_button, {
toggleModal(session, "modalExample", "open")
})
DataRow <- eventReactive(input$select_button,{
my_data()[SelectedRow(),2:ncol(my_data())]
})
output$popup <- renderUI({
bsModal("modalExample", paste0("Data for Row Number: ",SelectedRow()), "", size = "large",
column(12,
DT::renderDataTable(DataRow())
)
)
})
}
shinyApp(ui, server)