簡體   English   中英

JQuery 數據表 Ajax 動態列

[英]JQuery Datatables Ajax dynamic columns

我正在嘗試在其中使用 ajax 繪制數據表。 如果我手動創建 object 列數組它可以工作,但是當從 initComplete 創建列時,出現錯誤“無法讀取屬性 aDataSort”,我認為 initComplete 在繪制表后工作,因為在cols數組中具有結束數據表初始化后的值。 如何在 ajax 響應后創建列 object 數組?

var columnArrayManual = [{"data": "column1"},{"data": "column1"}];
var cols = [];
tblClients = $("#tblClients").DataTable(
            {
                "ajax": {
                    "url": "/index.php?controller=controller&act=controllerMethod&ajx=1",
                    "dataSrc": "data",
                    type: 'POST',
                    "data": function (d) {
                        var a = arguments[0];
                        return a;
                    }
                },
                "initComplete": function (settings, json) {
                    $.each(json.data[0], function (i, item) {
                      var col = {"data" : i};
                      cols.push(col);
                    })
                },
                "columns": cols
            }
         )

您需要在服務器端對 ajax 數據表進行排序,並了解數據表 jquery 插件接受返回數據的格式,即

[{
 "columns": [{
  "title": "col1_name",
  "data": "col1_name"
 }, {
  "title": "col2_name",
  "data": "col2_name"
 }],
 "data": [{
  "col1_name": "col1 data",
  "col2_name": "col2 data"
 }, {
  "col1_name": "col1 data",
  "col2_name": "col2 data"
 }]
}]

我在 ASP.NET MVC 平台中為這種方法創建了一篇帶有代碼的文章,您可以查看它以了解流程,即Jquery Ajax Datatables with Dynamic Columns

我試圖從dataSrc中的ajax響應中填充數據,而不是數據表初始化

"ajax": {
                    "url": "/index.php?controller=controller&act=controllerMethod&ajx=1",
                    "dataSrc": function ( json ) {
                        // I have created object array here
                        return json.data ;
                    }, 
                    "type": 'POST',
                    "data": function (d) {
                        var a = arguments[0];
                        return a;
                    }
                },

它奏效了!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM