2017-01-02 6 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  
      ] 
      }); 
     } 
    }, 
}); 

​​サンプル配列:私はこのように、各プロパティ名をハードコーディングすることによってcolumns.dataを設定同様

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

我々はプロパティと列のこのハードコードされたマッピングを取り除くことができます方法はありますか?

+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 propに配列を割り当てることですDataTableのerty:

columns:keys 

は今、これは次のようになります。

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

は、この情報がお役に立てば幸いです!。

+0

はい、今は正しいと思います。ありがとう:) –

+0

ようこそ。 –

0

私は同じ問題を抱えていたので、columns.dataプロパティのために余分なjson配列を作成することでこれを解決しました。 php関数を使用してヘッダーをループし、配列jsonに配置します。ここで

+0

はこのことを念頭に置いていました。しかし、それは回避策です。問題を解決できるものがあれば私は疑問に思っていた。 –

+0

これは現時点では不可能だと思う。私はちょうどウェブサイトをチェックし、これについて何も見つけることができません。 – dexter

関連する問題