jquery datatable - 删除/添加行时状态保存不起作用

时间:2015-05-11 06:38:30

标签: jquery datatable state

我有一个使用jQuery datatable版本1.10的表,

行代表问题,当用户点击该行时,它会在其下添加另一行,并像下拉菜单一样打开它(如手风琴效果)并显示答案。

有问题的情况是,您可以打开一堆行,然后定期搜索搜索栏中的任何单词,结果都可以,但即使用户关闭它们,之前打开的行仍然是打开的。 这就像Jquery记得用户打开的那些行。

我们不希望这样,我们希望结果提出所有行"关闭"

我尝试在Datatable中使用bstateSave,例如:

$([IPython.events]).on('notebook_loaded.Notebook', function(){
    $('#header').hide();
    IPython.keyboard_manager.command_shortcuts.add_shortcut('ctrl-;', function (event) {
        if (IPython.notebook.mode == 'command') {
            $('#header').toggle();
            return false;
        }
        return true;
    });

    IPython.keyboard_manager.command_shortcuts.add_shortcut('ctrl-.', function (event) {
        if (IPython.notebook.mode == 'command') {
            $('#header').show();
            $('#header-container').toggle();
            $('#maintoolbar').toggle();
            return false;
        }
        return true;
    });

});

这是在点击时删除和添加行的代码:

"bStateSave": true,
"fnStateSave": function (oSettings, oData) {
localStorage.setItem('DataTables_' + window.location.pathname,
JSON.stringify(oData));
},
"fnStateLoad": function (oSettings) {
var data = localStorage.getItem('DataTables_' + window.location.pathname);
return JSON.parse(data);
}

我尝试在删除行时将此行添加到上面的代码,但这也没有帮助:

$(' .tbl&#39)。数据表()state.save();

我也试过在搜索事件上重新加载表但没有运气。

Cookie会保存在页面上,而我正在使用Chrome。

我是否有任何遗漏或任何其他解决方法的方式将受到高度赞赏!

感谢。

1 个答案:

答案 0 :(得分:0)

DataTable saveState函数与您尝试执行的操作无关。 SaveState用于存储不同请求之间的当前页面,搜索和订单选项,但不包含行内容或样式。实际上,您的问题与搜索时重绘的表有关,因此您松开了类。您应该将行状态存储在表的数据对象中,并为行或单元定义特定的呈现函数。请参阅DataTable数据和columnDefs.render。