开发者问题收集

Datatable 服务器端处理 ajax 调用的成功回调

2015-03-30
16917

我想在服务器端调用完成

sAjaxSource: url 中指定的 URL 后,以及在我使用 fnCreatedRow 创建完行后隐藏一些列。我想在此回调中针对多个列执行列可见性语句

table.fnSetColumnVis(0, false, false);

。有没有办法在数据表中执行此操作?我尝试使用 fnDrawCallbackfnRowCallback ,但它们根本没有执行。

我编写的代码如下。

table = $('#ID').dataTable({
    "bServerSide": true,
    "bProcessing": true,
    "autowidth": true,
    //"bInfo": false,
    "dom": 'C<"clear">lfrtip',

    "scrollY": "350px",
    "scrollCollapse": false,
    "paging": true,
    "scrollX": true,
    "destroy":true,
    "sAjaxSource": url,
    "aoColumns": [
     {
           "targets": 0,
           //"bVisible": true,
           "title": "Select Client",
           "bSearchable": false,
           "bSortable": false,
           "width": "10%"
       },//Many such entries
    ],
    "fnCreatedRow": function (nRow, aaData, iDataIndex) {
     //Function body
    },
    "drawCallBack" : //Actual code that i want to get executed after fnCreatedRow has ended
});
2个回答

尝试一下:

"drawCallback": function(settings) {
               //do whatever
            }

https://datatables.net/reference/option/drawCallback

jonmrich
2015-03-30

我遇到过类似的情况,我通过将 xhr 事件附加到我的数据表来解决了它。

参见: https://datatables.net/reference/event/xhr

 $table.on('xhr.dt',
        function (e, settings, data, xhr) {
            //do something with the 'data' returned from server
            //OR handle some error using the 'xhr' request
        });

就我而言,$table 是我在初始化数据表时预先声明的一个变量。

Ben Croughs
2017-10-26