闪亮的数据表过滤器盒 [英] Shiny datatable filter box
本文介绍了闪亮的数据表过滤器盒的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我创建了一个表格,该表格的外观与屏幕截图相同.如何在列表中选择多个特定项,如何添加一个像excel这样的excel过滤器按钮?
I have created a table which looks as per screenshot. How could I add an excel like filter button where I could select multiple specific items of the list?
代码如下:
DT::datatable(current_list,
rownames = FALSE,
filter = 'top',
options = list(pageLength = 50,lengthChange = FALSE,autoWidth = FALSE,escape=FALSE, searching = TRUE,
columnDefs = list(list(className = 'dt-center', targets = 0:1),
list(width = '30px', targets = 0:0),
list(width = '270px', targets = 1:1)
)
)
)
推荐答案
library(DT)
dat <- iris
sketch <- htmltools::tags$table(
tableHeader(c("",names(dat))),
tableFooter(rep("", 1+ncol(dat)))
)
js <- c(
"function(){",
" this.api().columns().every(function(){",
" var column = this;",
" var select = $('<select multiple=\"multiple\"><option value=\"\"></option></select>')",
" .appendTo( $(column.footer()).empty() )",
" .on('change', function(){",
" var vals = $('option:selected', this).map(function(index,element){",
" return $.fn.dataTable.util.escapeRegex($(element).val());",
" }).toArray().join('|');",
" column.search(vals.length > 0 ? '^('+vals+')$' : '', true, false).draw();",
" });",
" column.data().unique().sort().each(function(d,j){",
" select.append('<option value=\"'+d+'\">'+d+'</option>')",
" });",
" });",
"}")
datatable(dat, container=sketch,
options = list(
initComplete = JS(js)
)
)
行名是字符串,然后按以下顺序排序:1、10、100,....不好.使用以下代码,它们不会被排序,这更好:
The row names are character strings and then they are sorted like this: 1, 10, 100, .... Not nice. With the following code, they are not sorted and this is better:
js <- c(
"function(){",
" this.api().columns().every(function(i){",
" var column = this;",
" var select = $('<select multiple=\"multiple\"><option value=\"\"></option></select>')",
" .appendTo( $(column.footer()).empty() )",
" .on('change', function(){",
" var vals = $('option:selected', this).map(function(index,element){",
" return $.fn.dataTable.util.escapeRegex($(element).val());",
" }).toArray().join('|');",
" column.search(vals.length > 0 ? '^('+vals+')$' : '', true, false).draw();",
" });",
" var data = column.data();",
" if(i == 0){",
" data.each(function(d,j){",
" select.append('<option value=\"'+d+'\">'+d+'</option>');",
" });",
" }else{",
" data.unique().sort().each(function(d,j){",
" select.append('<option value=\"'+d+'\">'+d+'</option>');",
" });",
" }",
" });",
"}")
这篇关于闪亮的数据表过滤器盒的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文