jQuery数据表设置列设计和成功回调的值

时间:2017-06-02 15:04:32

标签: javascript jquery html ajax datatables

我为我的数据表编写了以下代码,用我的数据库中的内容填充表格,如下所示:

 if (datatable != null)
            datatable.destroy();

        datatable = $('#tableProducts').DataTable({
            "pageLength": 50,
            "bLengthChange": false,
            "processing": true,
            "serverSide": true,
            "filter": true,
            "orderMulti": false,
            "bSort": false,
            "ajax": {
                "url": "/Bulk/LoadData/",
                "type": "POST",
                "data": {
                    "username": $(".sellerInput").val(),
                    "drange": $(".select2").val()
                },
                success: function (data) {
                }
            },
            "columns": [
                      {
                          "targets": -1,
                          "data": "ImageURL",
                          "name": "Title",
                          "render": function (data, type, row) {
                              return '<td><img src=' + data + '></td>';
                          },
                          "autoWidth": true
                      },
                {
                    "data": "Sales",
                    "name": "QuantitySold",
                    "render": function (data, type, row) {

                        return '<td>' + data + '</td>'
                    },
                },
                 {
                     "data": "CurrentPrice",
                     "name": "CurrenctPrice",
                     "render": function (data, type, row) {

                         return '<td> <b>$ ' + data + '</b></td>'
                     },
                 }
            ]
        });

如果我没有指定成功回调,这就行得很好。如果我像这样指定成功回调(也在上面的代码中显示):

"ajax": {
       "url": "/Bulk/LoadData/",
       "type": "POST",
       "data": {
                "username": $(".sellerInput").val(),
                "drange": $(".select2").val()
               },
                success: function (data) {
               // some custom code here and + filling up datatable with data from my DB...
               }
   },

这里的问题是如果我指定成功回调然后更新我的HTML页面的其他部分,那么数据表不会加载数据库中的数据..

我的问题是,如果我覆盖数据表的成功回调函数,以便只更新数据表本身的HTML页面的更多部分,我如何手动指定数据表的数据源?

有人能帮助我吗?

2 个答案:

答案 0 :(得分:2)

您可以使用dataSrc代替success来获取回复数据

试试这个:

"ajax": {
       "url": "/Bulk/LoadData/",
       "type": "POST",
       "data": function (d){
                d.username: $(".sellerInput").val(),
                d.drange: $(".select2").val()
       },
       "dataSrc": function (data) {
               // some custom code here and + filling up datatable with data from my DB...
            console.log(data);
            return data;
       }
   },

注意:此外,您还尝试将额外的参数作为usernamedrange发送,因此在DataTable中我们应该使用"data":function(d){作为函数发送额外的参数

Official Documentation

答案 1 :(得分:1)

来自docs

  

成功 - 不得覆盖,因为它在内部使用   数据表。操纵/转换服务器返回的数据   使用ajax.dataSrc。

所以简单地使用

ajax: {
   url: "/Bulk/LoadData/",
   type: "POST",
   data: {
     "username": $(".sellerInput").val(),
     "drange": $(".select2").val()
   },
   dataSrc: function (data) {
     // some custom code here and + filling up datatable with data from my DB...
     return data
   }
},

代替。