我正在尝试为我的 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。有没有人有任何想法?