我使用以下代码用数据库值填充下拉列表: -
Server.R
sqlOutputAssetClass <- reactive({
sqlInputAssetClass<- paste("select distinct ASSET_CLASS from DUMMY_TABLE",sep="")
dbGetQuery(con, sqlInputAssetClass)
})
sqlOutputFeedSrcSys <- eventReactive(input$pick_assetclass, {
sqlInputFeedSrcSys<- paste("select distinct FEED_SRC_SYS from DUMMY_TABLE where ASSET_CLASS=",
"'",
input$pick_assetclass,"'",sep="")
dbGetQuery(con,sqlInputFeedSrcSys)
})
observe ({
updateSelectInput(session,"pick_assetclass","ASSET CLASS",
choices = sqlOutputAssetClass())
})
observe ({
updateSelectInput(session,"pick_feedsrcsys","FEED SOURCE SYSTEM",
choices = sqlOutputFeedSrcSys())
})
UI.R
selectInput('pick_assetclass',label ='Asset Class',
choices=NULL,selected = NULL, multiple = FALSE,width="450px"),
selectInput('pick_feedsrcsys',label ='Feed Src Sys',
choices=NULL,selected = NULL, multiple = FALSE,width="450px"),
我看到下拉列表中包含值,但也包含数据库表中的列名称。 另一个奇怪的事情是,当下拉列表中只有一个值时,该值不会显示,但会显示列名称。
您能告诉我如何解决这些问题吗?
谢谢,
答案 0 :(得分:0)
这不是答案,而是延伸评论。
为了查看传递给updateSelectInput
的值,您可以在更新之前调用browser()
,如此
observe ({
choices = sqlOutputAssetClass()
browser()
updateSelectInput(session,"pick_assetclass","ASSET CLASS",
choices = sqlOutputAssetClass()
)
})
这将打开一个交互式控制台,您可以在其中打印您的选择以及所有其他输入/反应,并查看将其转换为&#34;裸&#34;字符串没有标签,属性或名称。在您单击&#34; next&#34;并且只要运行observe
块,就会重新打开。
您最终要传递给更新功能的对象应该如下所示
choices <- c("FX", "CS", "AT", "FUTURES")
答案 1 :(得分:0)
来自dataSet.NameString(1, "CUST_KIND") = document.searchForm.CUST_KIND.value;
:
选项:...这也可以是一个命名列表,其元素是(命名或未命名的)列表或向量。如果是这种情况,最外面的名称将用作相应子列表中元素的“optgroup”标签。这允许您对类似的选项进行分组和标记。 ...
所以在你的情况下,?selectInput
可能会返回一个命名向量。只需运行dbGetQuery
即可在从unname
返回之前删除这些名称,并且类别名称应该消失:
sqlOutputAssetClass