javascript - 数据表导出没有过滤器中的所有列值
问题描述
我正在使用此代码过滤数据表中的列:https ://jsfiddle.net/41vgefnf/10/
// This code has been beautified via http://jsbeautifier.org/ with 2 spaces indentation.
$(document).ready(function() {
function cbDropdown(column) {
return $('<ul>', {
'class': 'cb-dropdown'
}).appendTo($('<div>', {
'class': 'cb-dropdown-wrap'
}).appendTo(column));
}
$('#example').DataTable({
initComplete: function() {
this.api().columns().every(function() {
var column = this;
var ddmenu = cbDropdown($(column.header()))
.on('change', ':checkbox', function() {
var active;
var vals = $(':checked', ddmenu).map(function(index, element) {
active = true;
return $.fn.dataTable.util.escapeRegex($(element).val());
}).toArray().join('|');
column
.search(vals.length > 0 ? '^(' + vals + ')$' : '', true, false)
.draw();
// Highlight the current item if selected.
if (this.checked) {
$(this).closest('li').addClass('active');
} else {
$(this).closest('li').removeClass('active');
}
// Highlight the current filter if selected.
var active2 = ddmenu.parent().is('.active');
if (active && !active2) {
ddmenu.parent().addClass('active');
} else if (!active && active2) {
ddmenu.parent().removeClass('active');
}
});
column.data().unique().sort().each(function(d, j) {
var // wrapped
$label = $('<label>'),
$text = $('<span>', {
text: d
}),
$cb = $('<input>', {
type: 'checkbox',
value: d
});
$text.appendTo($label);
$cb.appendTo($label);
ddmenu.append($('<li>').append($label));
});
});
}
});
});
我启用了复制、Excel 和 CSV 按钮,以便在创建所需数据的视图后导出数据,但列过滤的所有值也会出现。
默认数据表仅在导出时返回列标题值,这正是我想要的。
解决方案
用于exportOptions
过滤掉.cb-dropdown-wrap
元素:
const exportOptions = {
format: {
header: function (data) {
return $('<div></div>')
.append(data)
.find('.cb-dropdown-wrap')
.remove()
.end()
.text()
}
}
}
在 DataTables 配置中
buttons: [
{
extend: 'copyHtml5',
exportOptions: exportOptions
},
{
extend: 'excelHtml5',
exportOptions: exportOptions
},
{
extend: 'csvHtml5',
exportOptions: exportOptions
}
]
完全未经测试,jsfiddle 根本不包括导出。
与此答案基本相同->在导出到文件时忽略 Jquery Datatables 中的标头中的 HTML,因此您可能会说我可能已标记为欺骗...
推荐阅读
- c# - 添加脚本到 ASP 编译
- c# - http.put 中的参数始终为空
- cmake - cmake -DCMAKE_EXPORT_COMPILE_COMMANDS 异常
- python - Python Cassandra 连接池
- javascript - VueJs 中带有 Apexcharts 的多个画笔图表
- python - 在 Python 中将字节数组转换为 16 位灰度图像
- mysql - 通过 SQL 中两个最大值的组合对 2 列进行排序
- snowflake-cloud-data-platform - 将 CSV 数据加载到雪花表
- python - Python Flask 和 Nginx-> 路由重定向
- python - 如何有效地删除熊猫中某些列的值高于 99% 的所有行?