Jquery Datatable draw()方法不适用于列筛选器
在花了几天的时间尝试了我在互联网上找到的许多解决方案之后,我感到非常高兴 在这里问 我有一个表单,当点击搜索按钮时,它会显示一个包含数据的表。该表有8列,我想在其中3列上添加一个文本输入,使用该输入应用带有列数据的筛选器。为了更好地了解我的需求,有以下几点 所以,我尝试了上述链接和的解决方案,但没有成功,也找不到我做错了什么 这是我的代码:Jquery Datatable draw()方法不适用于列筛选器,jquery,datatables,datatables-1.10,jquery-2.0,Jquery,Datatables,Datatables 1.10,Jquery 2.0,在花了几天的时间尝试了我在互联网上找到的许多解决方案之后,我感到非常高兴 在这里问 我有一个表单,当点击搜索按钮时,它会显示一个包含数据的表。该表有8列,我想在其中3列上添加一个文本输入,使用该输入应用带有列数据的筛选器。为了更好地了解我的需求,有以下几点 所以,我尝试了上述链接和的解决方案,但没有成功,也找不到我做错了什么 这是我的代码: <table id="EquipmentTable" class="table table-striped table-bordered bottom
<table id="EquipmentTable" class="table table-striped table-bordered bottom-buffer" width="100%">
<thead>
<tr>
<th><input type="checkbox" name="select_all" value="1" id="checkAll" class="text-center" onclick="$.fn.backboneSearch.checkAllResult()"></th>
<th>Equipement</th>
<th>Famille d'équipement</th>
<th>Gamme d'équipement</th>
<th>Etat</th>
<th>UI</th>
<th>Site de stockage</th>
<th>Salle technique</th>
<th></th>
</tr>
</thead>
<tfoot id="backboneSearchtfoot">
<tr id="filterrow">
<th></th>
<th id="textFilter1" class="textFilter"></th>
<th id="textFilter2" class="textFilter"></th>
<th id="textFilter3" class="textFilter"></th>
<th class="listFilter"></th>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</tfoot>
</table>
装备
凯佩门特家庭酒店
甘美·德奎佩蒙
埃塔特
用户界面
现场去库存
萨勒技术
//设置-向每个页脚单元格添加文本输入
$('#EquipmentTable tfoot th.textFilter')。每个(函数(i){
$(this.html(“”);
});
设备表=$(“#设备表”)。数据表({
aa数据:结果,
AO列:[
{mData:'标识符'},
{mData:'Mnemo'},
{mData:'FamGam.Family'},
{mData:'FamGam.Gamme'},
{mData:'dataState.Libelle'},
{mData:'IdentifierUI'},
{mData:'TechnicalRoom.InterventionUnitySenderSite'},
{mData:'IdentifierTechnicalRoom'},
],
是的,
过滤:错,
布雷特里夫:是的,
按钮:[{
类名:“btn警告”,
列:[1,2,3,4,5,6],
扩展:“excel”,
字段分隔符:“;”,
文本:“导出”
}],
dom:'Bfrtip',
语言:{/*不用于显示*/},
stateSave:没错,
b处理:true
});
$(equipmentTable.table().container()).on('keyup','tfoot th.textFilter input',函数(){
equipmentTable.column($(this).data('index'))
.search(此.value)
.draw();
});
aaData
使用的result
是我在搜索Rest方法的ajax成功中得到的一个json。我使用该成功方法填充表格
所以我的问题是:我做错了什么或误解了什么?
我试图将对象equipmentTable.column($(this.data('index'))).search(this.value)
与示例上返回的内容进行比较,并获得等效对象。这就是为什么我几乎可以肯定问题来自draw()方法
谢谢你的帮助。这是工作指南
首先,您的搜索不起作用,因为您将bFilter设置为false。然后只需删除此行或将此参数设置为true:
bFilter: true,
但这还不够。用于绘制输入文本列的循环将不起作用,因为列索引从0开始。然后,如果在第二列设置第一列,并在第一个输入上搜索,则排序将在第0列上完成。然后我将+1添加到您的数据索引中:
$(equipmentTable.table().container()).on('keyup', 'tfoot tr th.textFilter input', function () {
equipmentTable.column($(this).data('index') + 1)
.search(this.value)
.draw();
});
希望有帮助。谢谢您的回答。我试过了,也遇到了同样的问题。myTable.column(colIdx.search)(this.value)返回的对象与my what my code返回的对象完全相同,但draw()似乎不起任何作用。在此之前,您可以尝试在事件委派keyup中添加tr吗
tfoot tr th.textFilter输入
我也尝试过tr,但没有成功。我做了一个JSFIDLE:好的,我知道了,我会更新我的答案并给你新的提琴哇!非常感谢你,它起作用了!我没想到bFilter会成为问题。
$(equipmentTable.table().container()).on('keyup', 'tfoot tr th.textFilter input', function () {
equipmentTable.column($(this).data('index') + 1)
.search(this.value)
.draw();
});