【问题标题】:Reload data on fnDraw() function在 fnDraw() 函数上重新加载数据
【发布时间】:2014-08-11 04:54:39
【问题描述】:

从服务器端获取数据,然后将数据添加到 Datatables。但是在调用fndraw() 函数时。 ajax 没有再次加载,oSettings_aData 为空。

调用$("#clientTable").dataTable().fnDraw();,但点击按钮时没有数据加载到表中。

这是我填充数据表的函数。

function fillGrid() {
  alert("enterened fillgrid");
  $.ajax({
    type: 'POST',
    url: 'BehindCode/client.aspx/fillgrid',

    cache: false,
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    beforeSend: function() {



      $('#gridLoadingDiv').attr('style', 'display:block');
    },
    complete: function() {


      $('#gridLoadingDiv').attr('style', 'display:none');
    },
    data: "{}",

    success: function(data) {
      //data = data.d;
      data = JSON.parse(data.d).Data;
      //  alert(data);

      alert("entered success");

      $("#clientTable").DataTable({

        "stateSave": true,
        "searching": true,
        "processing": true,
        "data": data,
        // "ordering": false,
        "order": [
          [2, "asc"]
        ],

        "columns": [{
            "data": null,
            "defaultContent": ' <input type="checkbox" onclick="return selectOne();" />',
            "sorting": false
          },
          {
            "data": "CLIENT_ID",
            "visible": false
          },
          {
            "data": "CLIENT_NAME"
          },

          {
            "data": null,
            "defaultContent": ' <a ><img id="editimg" src="images/edit.png" width="15px" alt="edit" onclick="callEdit(this);" /></a>',
            "sorting": false
          }
        ],

        "fnDrawCallback": function(oSettings) {
          alert(oSettings);
          alert("draw called");

        }
      });






    }
  });


}

【问题讨论】:

  • 我在点击按钮时做了类似的事情,但我使用了 sAjaxSource 和 fnServerData 的组合。在fnServerData 我有一个成功的ajax 调用我会清除表并将调用fnDraw() 这很酷。
  • 请发布您的代码。 sAjaxSource 文件也是
  • 也许你可以查看table.api().ajax.reload();,如果你使用最新的 DT 版本就可以了
  • 你尝试新方法$().DataTable().ajax()了吗?它适用于这种情况.. datatables.net/reference/api/ajax
  • @supercool 你打败了我:P

标签: jquery datatables


【解决方案1】:

我可以给你一个基本的代码,希望对你有帮助。

我的数据表:

 var ETable = $('#myDataTable').dataTable({

       //bProcessing,bWidth etc comes above 
        "sAjaxSource": "../Employee/AjaxHandler",
        "fnServerData": function (sSource, aoData, fnCallback) {

        //Inside i have ajax call under click function like this 

                                      $.ajax({
           //on click i am deleting a row on success i am reloading table 
                                            "success": function (data) {
                                                ETable.fnClearTable(0);
                                                ETable.fnDraw();
                                            }
                                        });

我的加载 Ajax 调用

$.ajax({

//under success i call fnCallback(data)

});

这里的技巧是,当您在清除表格后调用 fnDraw 时,ajax call on load 将触发并为您提供最新信息并通过 fnCallback 填充表格。

【讨论】:

    猜你喜欢
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    • 2019-09-13
    • 2018-08-29
    相关资源
    最近更新 更多