在Jquery Datatable

时间:2016-12-16 15:22:52

标签: jquery datatables

我可以看到,当使用table.columns().cache()方法首次初始化表时,Jquery数据表会生成排序缓存。我的一个列包含td元素,其中包含带有类的span。例如:

<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);
    }
}

我遇到的问题是,当我这样做时,缓存没有更新,因此在排序时,行的显示顺序与我更新之前的顺序相同。

在更新行之后是否有一些方法可用于更新此缓存?我搜索过互联网,但显然这不是很多人都有的问题。也许如果我以不同的(更合法的)方式更新我的行,缓存可能会自行刷新?

1 个答案:

答案 0 :(得分:2)

完成修改单元格内容后,您可以使用row().invalidate()

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

在所有行无效后,您可能需要调用draw()来重绘表格。