2017-01-02 101 views
2

有沒有一種方法可以動態設置數據表列的數據源?爲jQuery數據表列動態設置數據源

$.ajax({ 
    data: JSON.stringify(data), 
    url: urlGetProviderQualificationTimeData, 
    type: 'POST', 
    contentType: "application/json; charset=utf-8", 
    success: function (obj) { 
     if (obj.success) { 
      $('#tblProds').dataTable({ 
      data: obj.data.ProdsDetails, 
      columns: [ 
       { "data": "PName" }, 
       { "data": "PTime" } //hardcoded mapping of properties  
      ] 
      }); 
     } 
    }, 
}); 

​​樣品陣列:

Array[2] 
0:Object 
    PName:"ATT", 
    PTime:"6.48" 
1:Object 
    PName:"CENTURYLINK", 
    PTime:"3.67" 

有沒有我們可以擺脫性能和列的這個硬編碼映射的方式就像我通過硬編碼每個屬性名這樣設置columns.data

+0

你想設置你從'ajax'調用收到的屬性嗎? –

+0

@ Alexandru-IonutMihai完全沒有指定屬性名稱 –

+0

你想從哪裏獲得屬性?從'obj.data'?請告訴我們陣列。 – Andy

回答

4

這裏是你的數組:

var array=[ 
      {PName:"ATT",PTime:"6.48" }, 
      {PName:"CENTURYLINK",PTime:"3.67"} 
      ]; 

現在,你應該得到的所有keys和建立最終的數組:現在

var obj=array[0]; 
var keys=[]; 
for(var k in obj) 
    keys.push({"data":k}); 

keys陣列看起來是這樣的:

[ 
    {"data":"PName"}, 
    {"data":"PTime"} 
] 

最後一步是將數組分配給columns道具的DataTable erty:

columns:keys 

現在,這應該是這樣的:

columns:[ 
      { "data": "PName" }, 
      { "data": "PTime" }  
] 

希望這有助於!

+0

是的,現在你明白了。謝謝:) –

+0

不客氣。 –

0

我有同樣的問題,並通過爲columns.data屬性創建額外的json數組來解決此問題。使用php函數來遍歷標題並將其放入json數組中。

+0

有這個事情。但這是一個解決方法。我在想,如果我們有什麼可以解決問題的話 –

+0

沒錯,我認爲目前這是不可能的。我剛剛查看了網站,找不到任何關於此的信息。 – dexter