DT Table 中的闪亮小部件 [英] Shiny widgets in DT Table

查看:25
本文介绍了DT Table 中的闪亮小部件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在 DT 表的行中包含闪亮的小部件,例如 textInput、selectInput(单个)、sliderInput 和 selectInput(多个).当小部件直接在页面上时,它们可以正确显示,但是,当它们放入表格中时,其中一些无法正确显示.

textInput 很好,除了一些 css 差异之外,selectInput(单个)大部分都很好,但是 selectInput(多个)没有正确显示,并且滑块输入肯定没有正确显示.依赖 javascript 的小部件似乎有问题.有没有办法让这些小部件在 DT 表中正常工作?

这是我的可重现示例.将这些小部件放入表格中时,我使用了它们的原始 HTML,但我直接从每个小部件的闪亮函数生成的 HTML 中获取了它.

图书馆(闪亮)图书馆(DT)ui <-流体页面(h3("这就是我希望小部件在 DT 表中的外观."),流体行(列(3,文本输入(inputId =文本",标签 = "文本")),column(3, selectInput(inputId = "single_select",label = "单选",选择 = c("", "A", "B", "C"))),列(3,滑块输入(inputId =滑块",标签 = "滑块",最小值 = 0,最大 = 10,值 = c(0, 10))),column(3, selectizeInput(inputId = "multiple_select",label = "多选",选择 = c("", "A", "B", "C"),多个 = TRUE))),h3("这就是它们实际出现在 DT 表中的方式."),流体行(DTOutput(outputId =表")))服务器 <- 功能(输入,输出,会话){output$table <- renderDT({数据 <- data.frame(ROW = 1:5,TEXT = '',SINGLE_SELECT = '<option value=""></option><option value="A">A</option><option value="B">B</option><option value="C">C</option></选择>',stringsAsFactors = FALSE)数据表(数据=数据,选择 = "无",逃逸 = FALSE,行名 = FALSE)})}闪亮应用(用户界面 = 用户界面,服务器 = 服务器)

解决方案

滑块

对于滑块,您必须从文本输入开始:

SLIDER = ''

然后用 JavaScript 把它变成一个滑块:

js <- c(功能(设置){"," $('#s').ionRangeSlider({"," 类型:'双',"," 网格:真实,"," grid_num: 10,","分钟:0,","最大:20,","来自: 5,",到:15"," });",}")

有关选项,请参阅

那是因为五个文本输入具有相同的 id.您必须为五个文本输入设置不同的 ID:

SLIDER = sapply(1:5, function(i) {sprintf('<input type="text" id="Slider%d" name="slider" value=""/>', i)}),

然后使用此 JavaScript 代码将它们变成滑块:

js <- c(功能(设置){"," $('[id^=Slider]').ionRangeSlider({"," 类型:'双',"," 网格:真实,"," grid_num: 10,","分钟:0,","最大:20,","来自: 5,",到:15"," });",}")

要设置 fromto 的初始值,最好在输入文本的 value 参数中给出它们,如下所示:

SLIDER = sapply(1:5, function(i) {sprintf('<input type="text" id="Slider%d" name="slider" value="5;15"/>', i)})js <- c(功能(设置){"," $('[id^=Slider]').ionRangeSlider({"," 类型:'双',"," 网格:真实,"," grid_num: 10,","分钟:0,",最大:20"," });",}")

多选

要获得所需的多选显示,您必须调用selectize():

MULTIPLE_SELECT = '
                
            
发送“验证码”获取 | 15天全站免登陆