【问题标题】:How to prevent jQuery DataTable tools to be redrawn after reload如何防止 jQuery DataTable 工具在重新加载后被重绘
【发布时间】:2017-02-13 12:34:55
【问题描述】:

我使用 jQuery DataTable,并且在 jQuery DataTable 上有一些工具,即过滤器、复选框等,并且在调用每个 table.ajax.reload() 之后,所有这些工具都会在AJAX 请求,这导致无法保留复选框值。那么,有什么办法可以防止 DataTable 的工具栏在每次重新加载时都被重绘呢?另一方面,重新加载后保留复选框值的最佳方法是什么(即使用隐藏值或 cookie)?

<input type="hidden" id="key" name="Key" />

$(document).ready(function () {

//code omitted for brevity
"fnServerData": function (sSource, aoData, fnCallback) {
    aoData.push({ "name": "all", "value": $('#key').val() });                   
    $.getJSON(sSource, aoData, function (json) {
        fnCallback(json);
        $("div.toolbar").html('<input type="checkbox" name="GetAll" 
            id="isGetAll" value="$('#key').val()"/> Get all records');
    });
},
//...



    $(document).on('change', '#isGetAll', function () {

        if ($("#key").val()) {
            $("#key").val('TRUE');
        } else {
            $("#key").val('FALSE');
        }
        table.ajax.reload();
    });
});

【问题讨论】:

  • @JulianoNunesSilvaOliveira 关于这个问题有什么想法吗?

标签: javascript jquery asp.net-mvc datatable datatables


【解决方案1】:

尝试使用数据表的状态保存属性。

  $(document).ready(function() {
    $('#example').DataTable( {
        stateSave: true
    } );
} );

Reference 1

Reference 2

This thread may help You.

【讨论】:

  • 抱歉回复晚了,我不在办公室。我已经尝试过使用 stateSave 的方法,但是对于每个状态,复选框的选定状态都会丢失。我删除了代码中所有不必要的部分来测试这个,我只是将 table.ajax.reload(); 留在复选框的更改事件中并留下 $("div.toolbar")。回调方法中的html('获取所有记录'); .除此之外,我还尝试在 $('#example').DataTable( {} ); 块之后使用这一行,但是这次没有呈现复选框。
  • 有没有关于这个问题的回复?
  • 你对jquery.cookie有任何了解吗?你能看看Cannot retain checkbox value using jquery.cookie吗?在此先感谢...
  • 关于this问题的任何想法?
猜你喜欢
  • 1970-01-01
  • 2011-01-29
  • 2018-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-14
  • 2022-01-16
  • 2021-06-30
相关资源
最近更新 更多