【问题标题】:How can i enable disable an action button based on a string in a line in R shiny?如何启用禁用基于 R 闪亮中一行中的字符串的操作按钮?
【发布时间】:2020-04-14 05:58:53
【问题描述】:

我创建了一个应用程序,它使用户能够运行查询并从 rodbc 获取结果。默认情况下,在 TextAreaInput 中生成的查询是 select * from $tableName。我在该输入框旁边有一个操作按钮“开始”,当我按下“开始”时,查询被执行,结果被提取到正文中。 现在,我希望只有在其中的“选择”子句时才启用“ GO”按钮。简而言之,用户应该只有在查询中包含 where 子句时才能执行。我绑定了 str_detect 和 grpl 但它们似乎没有工作。非常感谢 Amy 的帮助。

问候

body <- dashboardBody(
  fluidRow(
    width=12,
    column(
      width=11,
      textAreaInput2( inputId = "query",label = "Enter Query", width = "100%")
    ),
    column(
      width = 1,
      actionButton(inputId = "runQuery", label = "Go",style="width:70px",class="btn-lg"),
      class="align-middle",style = "height:100px;text-align:center;margin-top:25px;"
    ),style = "height:100px"
  ),
  dataTableOutput('table'),
  fluidRow(width = 12, column(
    width=10)
)

ui <- dashboardPage(skin = "green", header,sidebar, body)


server <- function(input, output, session) {
  resultTable <-  data.frame()
  observeEvent(input$tableName, {
    nQuery = paste("SELECT * FROM ",input$tableName,sep = "" )
    updateTextAreaInput(session, "query", value = nQuery)
  })
  observeEvent(input$runQuery, {
    resultTable <<- sqlQuery (channel = conn, query = input$query)
    output$table <- renderDataTable(resultTable)}
  )

【问题讨论】:

  • 'shinyjs' 包可能会有所帮助:deanattali.com/shinyjs
  • 我无法得出这个的逻辑。如果 sql 查询中不存在时,我需要禁用“开始”按钮

标签: r shiny shinydashboard


【解决方案1】:

shinyjs 可以为我们启用/禁用按钮。 grepl 可以告诉我们一个字符串是否包含另一个字符串。下面的最小示例显示了这一点:

library(shiny)
library(shinyjs)

ui <- fluidPage(

    shinyjs::useShinyjs(),

    textAreaInput("txt_query", label = "Enter Query", width = "100%"),

    actionButton("btn_run", label = "Run Query")

)

server <- function(input, output, session) {

    #Observe the query text box (runs when the query text box changes)
    observeEvent(input$txt_query, {

        #Check if the query contains the word 'when'
        if (grepl("when", input$txt_query) == TRUE) {

            #Enable the run button
            shinyjs::enable("btn_run")

        } else {

            #Disable the run button
            shinyjs::disable("btn_run")

        }

    })

}

shinyApp(ui, server)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-16
    • 1970-01-01
    • 2019-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    相关资源
    最近更新 更多