如果点击动作按钮,我怎样才能获得自定义消息(消息包含一个迷你表,具体取决于被动值)?这是我的代码。该消息应包括反应表,我将其称为rows()。
library(shiny)
library(datasets)
library(rhandsontable)
library(data.table)
my_message= writeLines("validation is not successful. \nCheck following
commodities:\nCPCCode Commodity Year")
# This is the message I want when action button is clicked
# validation is not successful. Please check the following commodities:
#CPCCode Commodity Year
# 100 Maize 2010
# 200 Rice 2015
# 300 Tea 2016
# 400 Banana 2014
#.
#.
#.
# and so on. The table can be upto max 50 rows
ui = fluidPage(
actionButton("message", "message")
)
server = function(input,output,session){
rows= reactive({
d=data.frame(CPCCode=100, Commodity="Maize", Year= 2010)
d$Commodity = as.character(d$Commodity)
d=rbind(d, c(200, "Rice", "2015"))
d=rbind(d, c(300,"Tea", 2016))
})
observeEvent(input$message,{
if (is.null(input$message) || input$message == 0){return()}
isolate({
input$message
the_message <- paste("validation is not successful")
js_string <- 'alert("SOMETHING");'
js_string <- sub("SOMETHING",the_message,js_string)
session$sendCustomMessage(type='jsCode', list(value = js_string))
})
})
}
shinyApp(ui,server)
library(shiny)
library(datasets)
library(rhandsontable)
library(data.table)
my_message= writeLines("validation is not successful. \nCheck following
commodities:\nCPCCode Commodity Year")
# This is the message I want when action button is clicked
# validation is not successful. Please check the following commodities:
#CPCCode Commodity Year
# 100 Maize 2010
# 200 Rice 2015
# 300 Tea 2016
# 400 Banana 2014
#.
#.
#.
# and so on. The table can be upto max 50 rows
ui = fluidPage(
actionButton("show", "Show modal dialog")
)
server = function(input, output) {
rows= reactive({
d=data.frame(CPCCode=100, Commodity="Maize", Year= 2010)
d$Commodity = as.character(d$Commodity)
d=rbind(d, c(200, "Rice", "2015"))
d=rbind(d, c(300,"Tea", 2016))
})
# Return the UI for a modal dialog with data selection input. If 'failed'
is
# TRUE, then display a message that the previous value was invalid.
dataModal <- function(failed = FALSE) {
modalDialog(
span("Validation is not successful", rows()),
footer = tagList(
actionButton("ok", "OK")
)
)
}
observeEvent(input$show, {
showModal(dataModal())
})
observeEvent(input$ok, {
removeModal()
})
}
shinyApp(ui,server)
答案 0 :(得分:0)
要在modalDialog
中显示表格,您需要在dataTableOutput
内添加modalDialog
,并在创建modalDialog
后呈现表格。我已经编辑了你的服务器代码来做同样的事情。希望这会对你有所帮助。
server = function(input, output) {
rows= reactive({
d=data.frame(CPCCode=100, Commodity="Maize", Year= 2010)
d$Commodity = as.character(d$Commodity)
d=rbind(d, c(200, "Rice", "2015"))
d=rbind(d, c(300,"Tea", 2016))
})
# Return the UI for a modal dialog with data selection input. If 'failed'
# is
# TRUE, then display a message that the previous value was invalid.
dataModal <- function(failed = FALSE) {
modalDialog(
span("Validation is not successful"),
dataTableOutput("table"),
footer = tagList(
actionButton("ok", "OK")
)
)
}
observeEvent(input$show, {
showModal(dataModal())
output$table <- renderDataTable({rows()})
})
observeEvent(input$ok, {
removeModal()
})
}