2016-12-16 177 views
2

我可以看到,使用table.columns().cache()方法首次初始化表時,Jquery數據表生成排序緩存。我的其中一列包含td元素,其中包含類的跨度。示例:刷新Jquery Datatable中的排序緩存

<tr>...<td><span class="SpanColors red"></span></td>...</tr> 
... 
<tr>...<td><span class="SpanColors blue"></span></td>...</tr> 

我對此特定列的排序取決於跨度上的類。我已經寫了一個基於文本的列分類功能來執行此操作,如here所述。

在我的表,我動態以這種方式更新行:

var id = //some guid 
var newClassToAdd = 'yellow'; 
var rows = table.rows().nodes(); 
for (var i = 0; i < rows.length; i++) { 
    var row = $(rows[i]); 
    var span = row.find('td span.SpanColors') 
    if (span && span.data('id') == id) { 
     span.removeClass('red blue yellow'); 
     span.addClass(newClassToAdd); 
    } 
} 

是我遇到的問題是,當我這樣做,緩存不更新,因此排序時,行以與我更新之前相同的順序出現。

行更新後是否有一些方法可用於更新此緩存?我搜索了互聯網,但顯然這不是很多人遇到的問題。也許如果我以不同的(更合理的)方式更新我的行,緩存可能會自行刷新?

回答

2

完成修改單元格內容後,您可以使用row().invalidate()

table.row(rows[i]).invalidate('dom'); 

畢竟行無效,你可能需要調用draw()重繪表。

+0

這工作完美。謝謝您的幫助! – thomasdclark