[英]Adding radio button to the DT Data Table in R Shiny
我需要將單選按鈕添加到DT數據表的列之一,並且在選擇單選按鈕時需要具有一個按鈕的彈出窗口。 我可以使用動作按鈕完成相同的任務,尋找使用單選按鈕實現相同目標的方法。 帶操作按鈕的代碼:
library(shiny)
library(DT)
library(shinyBS)
shinyApp(
ui <- fluidPage(
actionButton("Refresh","Refresh"),
br(),
br(),
DT::dataTableOutput("table"),uiOutput("popup")
),
server <- function(input, output,session) {
shinyInput <- function(FUN, len, id, ...) {
inputs <- character(len)
for (i in seq_len(len)) {
inputs[i] <- as.character(FUN(paste0(id, i), ...))
}
inputs
}
df <- reactiveValues(data = data.frame(
cbind(Delete = shinyInput(actionButton,nrow(mtcars),'button_', label = " ",onclick = 'Shiny.onInputChange(\"select_button\", this.id)'),
mtcars)
))
output$table <- DT::renderDataTable(
df$data, server = FALSE, escape = FALSE, selection = 'none'
)
observeEvent(input$select_button, {
toggleModal(session, "modalExample", "open")
})
SelectedRow <- eventReactive(input$select_button,{
as.numeric(strsplit(input$select_button, "_")[[1]][2])
})
output$popup <- renderUI({
bsModal("modalExample", "Do you want to delete the row?", "", size = "large",
actionButton("Delete","Delete")
)
})
observeEvent(input$Refresh,{
mtcars <<- retrieveValues()
df$data <- data.frame(
cbind(Delete = shinyInput(actionButton,nrow(mtcars),'button_', label = HTML('<input type="radio" name="radio" value="1"/>'),onclick = 'Shiny.onInputChange(\"select_button\", this.id)'),
mtcars)
)
})
}
)
shinyApp(
ui = fluidPage(
title = 'Radio buttons in a table',
tags$div(id="C",class='shiny-input-radiogroup',DT::dataTableOutput('foo')),
verbatimTextOutput("test")
),
server = function(input, output, session) {
m = matrix(
c(round(rnorm(24),1), rep(3,12)), nrow = 12, ncol = 3, byrow = F,
dimnames = list(month.abb, LETTERS[1:3])
)
for (i in seq_len(nrow(m))) {
m[i, 3] = sprintf(
'<input type="radio" name="%s" value="%s"/>',
"C", month.abb[i]
)
}
m
output$foo = DT::renderDataTable(
m, escape = FALSE, selection = 'single', server = FALSE,
options = list(dom = 't', paging = FALSE, ordering = FALSE)
)
output$test <- renderPrint(str(input$C))
output$popup <- renderUI({
bsModal("modalExample", "Do you want to delete the row?", "", size = "large",
actionButton("Delete","Delete")
)
})
observeEvent(input$C, {
#print("TESTING")
showModal(modalDialog(
title = "Do you want to delete the row?",
actionButton("delete","Delete"),
size = "l",
easyClose = TRUE,
fade = TRUE,
footer = tagList(
modalButton("Close")
)
))
})
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.