[英]DataTables fnFilter not working after updating table with jQuery
[英]Applying fnFilter to a modified table
使用DataTables 1.9.4和JQuery 1.4.4。 我正在尝试创建一个表,该表根据可见列过滤某些行。 该表由内部控制器之类的AngularJS驱动。 显示该表时,过滤器可以正常工作,但是此后,如果值更改,则不会更新过滤器。 控制器由一个数组组成(每行一个)。 通过它更新表时,不会重新应用过滤器。 数据更改时,如何使过滤器重新评估每一行?
由控制器生成的HTML:
<table id="table-status">
<thead>
<tr>
<th>visible</th>
<th>Name</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>name1</td>
<td>1</td>
</tr>
<tr>
<td>0</td>
<td>name2</td>
<td>2</td>
</tr>
<tr>
<td>1</td>
<td>name3</td>
<td>3</td>
</tr>
</tbody>
</table>
DataTables初始化:
var oTable = $("#table-status").dataTable( {
"aoColumnDefs": [ { "bVisible": false, "aTargets": [ 0 ] },
{ "bVisible": true, "aTargets": [ 1 ] },
{ "bVisible": true, "aTargets": [ 2 ] } ],
"bSort": false,
"bFilter": true
} );
oTable.fnFilter("1", 0, false, false, false, false);
我不能完全确定这是否是您需要的,但是我根据名为Status
的列滚动了自己的函数来显示或不显示某些行。
我有一个复选框,可以包含值0, 1, 2
和3
。
首先,我得到了正则表达式函数来关联要过滤的值:
var filter = "^" + $("#filterStatusCheck option:selected").map(function() {
return this.value;
}).get().join("|") + "$";
例如,它返回^1|2$
,这意味着我想过滤值1和2。
然后,我search()
数据表,寻找那些元素(实际上不是我,而是他们的search()
方法)。
var t = s.getTable().DataTable();
t.column(8).search(filter, true, false).draw();
在这里,对于索引为8
列,我正在使用上面的过滤器进行搜索,然后再次对DataTable进行draw()
。
对于您的情况,您可能想弄清楚可以附加上面的代码的事件(也许是在更新行之后吗?)。 您的filter
将为1(可见,对吗?),而列搜索将为0
(第一列称为visible)。
希望能帮助到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.