我使用可数据,我试图使过滤成为可能,问题是我想从复选框中选择我需要筛选的列。
因此,如果我选择一列,我得到4或5列,但我选择1,我可以找到问题所在。
如您在图像上所看到的,我只选择了一个站立代码,但我有5列用于过滤,但我必须只有一个。
我的代码: jsfinddle
addSpliting('');
function addSpliting(val) {
if(val != '') {
$("#test1").DataTable({
destroy: true,
searchPanes: {
layout: 'columns-4',
},
dom: 'Pfrtip',
columnDefs: [{
searchPanes: {
show: true,
},
targets: val
}]
});
}
else {
$("#test1").DataTable({
destroy: true
});
}
}
function setFilters() {
$("table thead tr th").each(function(index) {
var boxes = `<label>
<input type="checkbox" class="checkbox" id="${index}"/>
${$(this).text()}
</label>`
if ($(this).text() != "") $(".checkBoxes").append(boxes);
});
}
setFilters();
$("#createFilter").on("click", function() {
var columFilters = [];
$('.checkbox:checked').each(function () {
columFilters.push(parseInt($(this).attr('id')));
});
addSpliting(columFilters);
});发布于 2020-09-23 12:59:41
我试图在文档中找到与你的问题有关的任何东西,但什么也找不到。在我看来,似乎没有本地的方式来配置您想要的布局。它还看起来像,无论您定义什么目标,每个列都呈现搜索窗格。但我知道,我找到了一种实现该功能的“讨厌”方法。
每个搜索窗格都放在带有以下类的div中:.dtsp-searchPanes
现在,只需在每个子div内部迭代,并检查当前迭代是否包含在val数组中。如果不是:隐藏对应的div,否则显示div。
您的addSplitting函数应该如下所示:
function addSpliting(val) {
if (val != '') {
$("#test1").DataTable({
destroy: true,
searchPanes: {
layout: 'columns-4',
},
columnDefs: [{
searchPanes: {
show: true,
},
targets: '_all'
}],
dom: 'Pfrtip'
});
$('.dtsp-searchPanes').children().each(function(i, obj) {
if (!val.includes(i)) $(this).hide();
else $(this).show();
});
} else {
$("#test1").DataTable({
destroy: true
});
}
}
我检查了好几次,它似乎运行得完美无缺,但对我来说,整个过程有点滞后。可能不是实现该特性的最佳方式,但这是我能想到的最好的方法。
检查小提琴,看看它的行动:小提琴。希望这能帮到你。如果你还有更多的问题,请随便问!
https://stackoverflow.com/questions/64027606
复制相似问题