使用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);
答案 0 :(得分:0)
我不完全确定这是否是您所需要的,但我根据名为Status
的列推出了自己的功能来显示或不显示某些行。
我有一个复选框,其中可以包含值0, 1, 2
和3
。
首先,我得到了关联我想要过滤的值的正则表达式函数:
var filter = "^" + $("#filterStatusCheck option:selected").map(function() {
return this.value;
}).get().join("|") + "$";
例如,返回^1|2$
,这意味着我想过滤值1和2。
然后,我search()
DataTable,寻找这些元素(实际上不是我,而是他们的search()
方法。
var t = s.getTable().DataTable();
t.column(8).search(filter, true, false).draw();
此处,在索引为8
的列上,我这样做是为了搜索,使用上面的过滤器,然后再次draw()
DataTable。
在您的情况下,您可能想要弄清楚您可以附加上述代码的事件(可能在行更新后?)。您的filter
将为1(可见,对吗?),而您的列搜索将为0
(第一列称为可见)。
希望它有所帮助。