2017-06-02 134 views
0

如果在闪亮的操作按钮单击后,如何获得自定义消息(该消息包含取决于反应值的迷你表)?这是我的代码。该消息应该包含被称为rows()的反应表。单击r中的操作按钮时的自定义消息

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) 

EDITED。它只显示表格的第一行。任何建议,将不胜感激

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) 
+1

您可以使用'模态对话框'。请参阅[本](https://shiny.rstudio.com/reference/shiny/latest/modalDialog.html)链接。 – SBista

+0

谢谢!非常有用 –

+0

但有点困惑如何关联我的情况 –

回答

0

要显示表中的modalDialog,您将需要添加一个dataTableOutputmodalDialog内,使表创建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() 
    }) 

    } 
+0

非常感谢你!很有用! –

+1

如果您的问题得到解答,您能接受吗? – SBista