首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将fnFilter应用于已修改的表

将fnFilter应用于已修改的表
EN

Stack Overflow用户
提问于 2015-03-26 18:24:35
回答 1查看 470关注 0票数 0

使用DataTables 1.9.4和JQuery 1.4.4。我正在尝试创建一个根据可见列过滤某些行的表。该工作台由一个类似AngularJS的内部控制器驱动。当显示该表时,筛选器工作正常,但此后,如果值发生更改,则筛选器不会更新。控制器由一个数组(每行一个)组成。当通过它更新表时,不会重新应用筛选器。如何让筛选器在数据更改时重新评估每一行?

控制器生成的HTML:

代码语言:javascript
运行
复制
<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初始化:

代码语言:javascript
运行
复制
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);
EN

回答 1

Stack Overflow用户

发布于 2015-03-26 18:51:34

我不能完全确定这是否是您所需要的,但是我根据一个名为Status的列使用了我自己的函数来显示或不显示一些行。

我有一个可以包含值0, 1, 23的复选框。

首先,我得到了regex函数,它将我想要过滤的值关联起来:

代码语言:javascript
运行
复制
var filter = "^" + $("#filterStatusCheck option:selected").map(function() {
   return this.value;
}).get().join("|") + "$";

例如,它返回^1|2$,这意味着我要过滤值1和2。

然后,我对DataTable执行search()操作,查找这些元素(实际上不是我,而是它们的search()方法。

代码语言:javascript
运行
复制
var t = s.getTable().DataTable();
t.column(8).search(filter, true, false).draw();

这里,在索引为8的列上,我使用上面的过滤器进行搜索,然后再次对DataTable执行draw()操作。

在您的例子中,您可能想要弄清楚可以附加上述代码的事件(可能就在行被更新之后?)。您的filter将是1 (visible,对吗?),而您的列搜索将是0 (第一列称为visible)。

希望能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29276087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档