2013-04-10 51 views
3

我想爲我的jQuery DataTable使用Column Filter插件。該表的HTML很簡單:如何爲動態生成的表填充table.DataTable.fnSettings.aoFooter?

​​

...和所有內容,包括標題文字是通過代碼推:

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。有沒有人有任何想法?

回答

2

我有同樣的問題。

您必須將tfoot部分添加到您的html table

<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> 

然後你只需要調用數據表插件。