繁体   English   中英

将fnFilter应用于修改后的表

[英]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, 23

首先,我得到了正则表达式函数来关联要过滤的值:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM