3

我正在尝试为我的 jQuery DataTable 使用列过滤器插件。表格的 HTML 很简单:

<table id="something" class="some_classes"></table>

...并且包括标题文本在内的所有内容都通过代码推送:

oTable = $("#something").dataTable({
    ...
    aoColumns: [
        { sTitle: 'ID', sWidth: '5%', mData: 0 },
        { sTitle: 'Subject', sName: 'on_what', mData: 1 },
        { sTitle: 'Action', sName: 'audit_type', mData: 2 },
        etc...
    ],
    ...
});

当我尝试这样激活列过滤器时:

$('#something').dataTable().columnFilter({
    aoColumns: [
        null,
        {
            type: "select",
            values: ['A', 'B', 'C', 'D', 'E']
        },
        {
            type: "select",
            values: ['1', '2', '3']
        },
        etc...
    ]
});

...什么都没有出现。我已经完成了代码,调试到控制台,问题似乎是表的 fnSettings().aoFooter 没有被填充。列过滤器代码查找它以便将过滤器添加到表的底部,但是当它查看我的表时,除了一个空数组之外什么都没有。我知道代码正在执行的事实,如果我分配 aoFooter = aoHeader 则过滤器会显示在标题中,因此可以肯定代码在它有去处时可以工作。

我还尝试从控制台运行列过滤器代码,但无济于事,即使在附加<tfoot><tr><th></th>...</tr></tfoot>到它之后(在我尝试之前我怀疑它不起作用)。我也尝试过类似的东西oTable.dataTable().fnSettings().aoFooter = [{},{},{},{},{},{}];,但一无所获。我也试过这个:

for (i = 0; i < 6; i++)
    oTable.dataTable().fnSettings().aoFooter[i] = $('<td></td>');

所以我的问题似乎是如何有效地将内容推送到aoFooter。有没有人有任何想法?

4

1 回答 1

3

我有同样的问题。

您必须将tfoot部分添加到您的 htmltable中。

<table id="data-table" >
    <thead>
        <tr>
            <th> col 1</th>
            <th>col 2</th>
        </tr>
    </thead>
    ...
    <tfoot>
        <tr>
            <td> col 1</td>
            <td>col 2</td>
        </tr>
    </tfoot>
</table>

然后你只需要调用数据表插件。

于 2013-12-29T00:43:53.200 回答