使用shiny DT包中的选择扩展附带的全选按钮仅选择过滤的行

2024-01-24

我试图使用闪亮的 DT 包中的选择扩展附带的全选按钮来仅选择过滤的行,但它会选择所有行。 这是闪亮的样本app https://radhikesh.shinyapps.io/selectextension/

以下是该应用程序的可重现代码:

library(DT)
data(mpg)
# Define UI for application 
ui <- fluidPage(

    # Application title
    titlePanel("Select only filtered rows using selectall button"),

    br(),
    br(),

    DT::dataTableOutput("table")


)

# Define server logic 
server <- function(input, output) {

    output$table <- DT::renderDataTable({
        datatable(mpg, escape=F,
                  rownames=F,
                  filter = 'top',
                  #  colnames = c("Data Type","Variable","Description", "Filename"),
                  class = "compact hover row-border",
                  extensions = c('Scroller','Select', 'Buttons'),

                  options = list(
                      select = list(style = "multi", items = "row"),
                      columnDefs = list(list(className = 'dt-center', targets = "_all")),
                      language = list(
                          info = 'Showing _START_ to _END_ of _TOTAL_ variables'),
                      deferRender = TRUE,
                      scrollY = 500,
                      scroller = TRUE,
                      dom = "Blfrtip",
                      buttons = c('selectAll', 'selectNone')
                  ),
                  selection="none"
        ) }, server = F
    )
}

# Run the application 
shinyApp(ui = ui, server = server)

我想我可能需要添加一些自定义 JavaScript 来解决这个问题,但我不擅长它。 任何人都可以提供帮助或提供任何建议。

Thanks


不知何故,我设法找到了我的问题的解决方案。将其发布在这里,这样可能会对其他人有所帮助。我从几个地方得到了帮助。数据表文档 https://datatables.net/reference/option/buttons.buttons.extend and 堆栈溢出 https://stackoverflow.com/a/40363328/6090977

使用这些帮助,我扩展了全选按钮功能,并将其扩展为取消全选按钮(取消选择任何筛选的行)。

这是更新后的闪亮app https://radhikesh.shinyapps.io/selectextension/

以下是更新后的代码:

library(shiny)
library(DT)
data(mpg)
# Define UI for application that draws a histogram
ui <- fluidPage(

    # Application title
    titlePanel("Select only filtered rows using selectall button"),
    
    br(),
    br(),
    
    DT::dataTableOutput("table")
    
        
    
)

# Define server logic required to draw a histogram
server <- function(input, output) {

    output$table <- DT::renderDataTable({
        datatable(mpg, escape=F,
                  rownames=F,
                  filter = 'top',
                  #  colnames = c("Data Type","Variable","Description", "Filename"),
                  class = "compact hover row-border",
                  extensions = c('Scroller','Select', 'Buttons'),
                  
                  options = list(
                      select = list(style = "multi", items = "row"),
                      columnDefs = list(list(className = 'dt-center', targets = "_all")),
                      language = list(
                          info = 'Showing _START_ to _END_ of _TOTAL_ variables'),
                      deferRender = TRUE,
                      scrollY = 500,
                      scroller = TRUE,
                      dom = "Blfrtip",
                      buttons = list(list(extend='selectAll',className='selectAll',
                                text="select all rows",
                                action=DT::JS("function () {
                                var table = $('.dataTable').DataTable();
                                table.rows({ search: 'applied'}).deselect();
                                table.rows({ search: 'applied'}).select();
                }")
                                ), list(extend='selectNone',
                                        text="DeselectAll",
                                        action=DT::JS("function () {
                                var table = $('.dataTable').DataTable();
                                table.rows({ search: 'applied'}).select();
                                table.rows({ search: 'applied'}).deselect();
                }")
                                ))
                      
                  ),
                  selection="none"
        ) }, server = F
    )
}

# Run the application 
shinyApp(ui = ui, server = server)

希望这对其他人有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用shiny DT包中的选择扩展附带的全选按钮仅选择过滤的行 的相关文章

  • 检查 DOM 元素是否为复选框

    如何检查给定的 DOM 元素是否为复选框 设想 我有一组文本框和复选框 其中的值是动态分配的 我没有办法识别 DOM 元素是复选框还是文本框 只使用普通的 javascript 你就可以做到 if el type el type check
  • Google 饼图未显示所有数据行

    我正在尝试绘制人口与国家名称的关系图 我发现 Google 可视化库仅渲染前几个 实际上数字似乎是随机的 具体取决于我使用的数据 有时添加 其他 条目 但它没有t 实际上具有其余条目的值 Example 1 With all countri
  • 来自 DataURL 的 Blob?

    Using FileReader s readAsDataURL 我可以将任意数据转换为数据 URL 有没有办法将数据 URL 转换回Blob使用内置浏览器 API 的实例 用户 Matt 一年前提出了以下代码 如何在javascript中
  • 如何获取 RxJSSubject 或 Observable 的当前值?

    我有 Angular 2 服务 import Storage from storage import Injectable from angular2 core import Subject from rxjs Subject Inject
  • jQuery 的 css() 在应用于滚动事件时滞后

    我正在尝试实现一个简单的 固定标题 表 我知道这在理论上只能用 CSS 来完成 但是当涉及到 OSX Lion 及其消失的滚动条时 它效果不佳 所以我用 jQuery 来做 方法很简单 只有1 5行代码 inbox scroll funct
  • Chrome SuppressDifferentOriginSubframeJSDialogs 使用 JS 设置覆盖?

    Chrome 开发团队显然刚刚推出了一项名为 SuppressDifferentOriginSubframeJSDialogs 的新 功能 这使得默认情况下不会显示来自与父级不同域上的 iFrame 的警报 确认框 https www ch
  • ngModel.$parsers 忽略 ng-model 值末尾的空格

    我有这样的指令 directive noWhitespace parse function parse return restrict A require ngModel link function scope element attrs
  • 如何动态访问数据帧列表中的特定属性

    我有一个数据 它是数据框的列表 我正在尝试访问列表中每个数据帧内的特定属性 可以提取特定属性DP UniqueId使用下面的代码 gt attr new data A AA SpotfireColumnMetaData DP UniqueI
  • 是否可以覆盖 javaScript 原始数据类型?

    问题是不言自明的 我知道可以扩展原始数据类型 例如string但有可能覆盖它吗 这是在采访中被问到的一个问题 不 你不能覆盖任何东西 Ecma脚本定义原始类型 http es5 github com x4 3 2 Undefined Nul
  • 迭代字符串 R 的字符

    有人可以解释一下为什么这不会在 R 中单独打印所有数字 numberstring lt 0123456789 for number in numberstring print number 字符串不就是字符数组吗 在 R 中该怎么做 In
  • 具有行组的 JQuery 斑马条纹表

    我通常将斑马条纹表行设置为奇数 偶数 如下所示 效果很好 table tbody tr visible even this addClass even table tbody tr visible odd this addClass odd
  • ggplot2 可视化/显示中的地图错误?

    正如您在下面看到的 我使用 ggplots 制作的地图上存在一个奇怪的显示问题 任何投影似乎都会发生同样的问题 这是代码 仅包maps and ggplot2需要 mapWorld lt borders world colour gray5
  • 根据R中的前一行和当前行按组计算

    我可以根据 R 中的前一行和当前行进行计算 对于此数据框 df A B 1 2 2 2 2 3 3 4 5 5 B2 A2 0 5 B1 我可以使用这段代码来计算这个函数 for i in 2 nrow df B i lt 1 2 B i
  • JQuery DataTable 单元格从行单击

    我正在尝试在 jquery 数据表上实现一个函数 该函数返回单击行的第一列和第四列 我正在遵循这个示例 它允许我操作单击的行http datatables net examples api select single row html ht
  • Web SQL 数据库 + Javascript 循环

    我正在尝试解决这个问题 但我自己似乎无法解决 我正在使用 Web SQL DB 但无法让循环正常使用它 I use for var i 0 i lt numberofArticles 1 i db transaction function
  • 常规 JavaScript 可以与 jQuery 混合使用吗?

    例如 我可以采用这个脚本 来自 Mozilla 教程 https developer mozilla org en Canvas tutorial Basic usage
  • 如何在粘贴时获取文本区域输入字段的新值?

    我发现当我尝试从文本区域字段读取值时onpaste调用函数时 我得到字段的旧值 粘贴操作之前的值 而不是新值 粘贴操作之后的值 以下是此行为的演示 http jsfiddle net qsDnr http jsfiddle net qsDn
  • 有没有办法防止输入 type=“number” 获得多个点值?

    我只想得到十进制值 如 1 5 0 56 等 但它允许多个点 有什么办法可以预防吗 您可以使用pattern属性
  • 在 Google Apps 脚本中的文本前插入换行符

    我需要在 Google 文档中的某些文本之前插入一些换行符 尝试过这种方法但出现错误 var body DocumentApp getActiveDocument getBody var pattern WORD 1 var found b
  • 使用 Lodash 将对象键转换为具有键值数量的数组[重复]

    这个问题在这里已经有答案了 我有一个产品对象 products bread 1 milk 2 cheese 2 chicken 1 我想要一个包含产品名称的数组 如下所示 products bread milk milk cheese ch

随机推荐