使用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);
发布于 2015-03-26 18:51:34
我不能完全确定这是否是您所需要的,但是我根据一个名为Status
的列使用了我自己的函数来显示或不显示一些行。
我有一个可以包含值0, 1, 2
和3
的复选框。
首先,我得到了regex函数,它将我想要过滤的值关联起来:
var filter = "^" + $("#filterStatusCheck option:selected").map(function() {
return this.value;
}).get().join("|") + "$";
例如,它返回^1|2$
,这意味着我要过滤值1和2。
然后,我对DataTable执行search()
操作,查找这些元素(实际上不是我,而是它们的search()
方法。
var t = s.getTable().DataTable();
t.column(8).search(filter, true, false).draw();
这里,在索引为8
的列上,我使用上面的过滤器进行搜索,然后再次对DataTable执行draw()
操作。
在您的例子中,您可能想要弄清楚可以附加上述代码的事件(可能就在行被更新之后?)。您的filter
将是1 (visible,对吗?),而您的列搜索将是0
(第一列称为visible)。
希望能有所帮助。
https://stackoverflow.com/questions/29276087
复制相似问题