我最终没有破坏数据表并重新填充它,而是修改了jquery.datatables.js
版本1.10.2
.
主要问题是 1935 行jquery.datatables.js
检查该行是否已创建:
if ( aoData.nTr === null )
{
_fnCreateTr(oSettings, iDataIndex);
}
解决这个问题的一种选择是设置aoData.nTr = null
。但这可能会破坏其他功能或导致不必要的副作用,因此这不是可接受的解决方案。
我选择添加一个参数.draw()
函数(第 7137 行)并添加一个名为bForceReDraw
(draw()
已经接受了一个参数,所以我们添加第二个参数):
_api_register('draw()', function (resetPaging, forceReDraw) {
return this.iterator( 'table', function ( settings ) {
settings.bForceReDraw = forceReDraw === true;
_fnReDraw(settings, resetPaging === false);
} );
} );
然后我改变了null
在线 1935 上查看:
if ( aoData.nTr === null || oSettings.bForceReDraw === true )
{
_fnCreateTr(oSettings, iDataIndex);
}
在函数中_fnCreateTr()
还有一个null
检查nTr
(第1586行)所以我也需要修改它:
if ( row.nTr === null || oSettings.bForceReDraw === true )
{
nTr = nTrIn || document.createElement('tr');
...
现在我们只需调用draw()
有了新的论点,一切都按预期进行。
$('#data').DataTable().columns.adjust().draw(false, true);