2013-10-14 16 views
1

我正在使用jQuery dataTable庫,並且遇到問題。我有一些事件處理程序允許更改表格單元格值。在發生這樣的變化之後,我然後點擊具有新更改數據的列的列標題。它使用所有的行,但是當我第一次點擊該列時,包含新數據的行仍然按照它的原始值進行排序。以下是我使用的兩個功能。jQuery dataTable不對新數據進行排序

因此,fnDraw()沒有達到預期效果。

//called once, after page load completes 
function drawTable() 
{ 
    $('#mytable').dataTable({"bFilter": false, 
             "bSort": true, 
             "bInfo": false, 
             "bPaginate": false, 
             "bDestroy": true}); 
} 

//called each time a table cell value is changed 
function initTable() 
{ 
    var oTable = $('#mytable').dataTable(); 
    oTable.fnDraw(); 
    //fnDraw is not having the desired effect 
} 

回答

1

我從DataTables網站上找到一個實例,他們有一個直接處理這類問題的例子。此外,他們還展示瞭如何爲選擇列表和輸入文本和數字進行實時排序。

http://www.datatables.net/examples/plug-ins/dom_sort.html

如果有一個更好的答案,我會很高興去看看。目前,我覺得他們的榜樣是要走的路。

0

你是否也測試:

//called each time a table cell value is changed 
function initTable() 
{ 
    var oTable = $('#mytable').dataTable({"bFilter": false, 
            "bSort": true, 
            "bInfo": false, 
            "bPaginate": false, 
            "bDestroy": true}); 
    oTable.fnDraw(); 
    //fnDraw is not having the desired effect 
} 

+0

jacoh,這樣做的工作,但引入了副作用。那就是:表格考慮了新數據(好),但立即使整個表格像用戶點擊第一行一樣。 – matt

+0

在initTable()函數中使用「bSort」:false? – jacouh

+0

我試過了,沒有工作,它禁用列排序! – matt

0

除了@jacouh重新初始化表的解決方案之外,還可以在DataTables選項中嘗試設置"bStateSave": true。這應該讓DataTables設置一個cookie來記住用戶的排序偏好。