2016-11-21 9 views
0

データテーブルがあります。遅延レンダリングを使用したいと思います。私のコントローラメソッドはjsonオブジェクトの配列を返します。以下のコードを参照してください。私のデータテーブルで遅延レンダリング機能を使用するには

**データ設定** **

これは、ページが読み込まれたときに呼び出されます。

 var $dtTable = $("#tblPlayer"); 
     $dtTable.dataTable({ 
      bFilter: false, 
      pageLength: 10, 
      paging: true, 
      autoWidth: true, 
      columns: 
      [ 
       null, 
       { "orderDataType": "dom-text", type: "string" }, 
       { "orderDataType": "dom-text", type: "string" }, 
       { "orderDataType": "dom-text-numeric" }, 
       { "orderDataType": "dom-text-numeric" }, 
       { "orderDataType": "dom-text-numeric" }, 
       { "orderDataType": "dom-text-numeric" }, 
       { "orderDataType": "dom-text-numeric" }, 
       null, 
       null, 
       null 
      ], 
      "ajax": "Player/GetSetPlayers", 
      "deferRender": true 
     }); 

コントローラメソッド

public object[] GetSetPlayers() 
    { 
     var players = GetPlayers(); 

     _players = new object[players.Count]; 

     for (var i = 0; i < players.Count; i++) 
     { 
      _players[i] = players[i]; 
     } 
     return _players; 
    } 

GetSetPlayers()はJSONオブジェクトの配列を返し、以下の結果は、インデックス0及び1に含まれるもののexampelあります。

応答

[ 
    { 
     "product":25000, 
     "rank":1, 
     "dirty_money":25000, 
     "id":"b4b41b18edbb49b9ae80be5e768b6b80", 
     "name":"Dan", 
     "ban_status":0, 
     "edit":"<a href='/support/player_gamedata/b4b41b18edbb49b9ae80be5e768b6b80/game' class='btn'><i class='icon-folder-close'></i></a>", 
     "credit":30, 
     "clean_money":20000, 
     "ban":"<a href='/support/ban_player/by_id/b4b41b18edbb49b9ae80be5e768b6b80/' class='btn'><i class='icon-remove'></i></a>", 
     "supplies":25000 
    }, 
    { 
     "product":25000, 
     "rank":1, 
     "dirty_money":25000, 
     "id":"3cac6e366170458686021eaa77ac4d6d", 
     "name":"Dan", 
     "ban_status":0, 
     "edit":"<a href='/support/player_gamedata/3cac6e366170458686021eaa77ac4d6d/game' class='btn'><i class='icon-folder-close'></i></a>", 
     "credit":30, 
     "clean_money":20000, 
     "ban":"<a href='/support/ban_player/by_id/3cac6e366170458686021eaa77ac4d6d/' class='btn'><i class='icon-remove'></i></a>", 
     "supplies":25000 
    } 
] 

答えて

0

私はあなたが返されたデータから移入される必要があり、各列の「データ」属性を指定する必要があると思います。それ以外の場合は、jsonオブジェクトのどの属性が各列に移動するかはわかりません。データの配列をオブジェクトの配列ではなく配列の配列として定義した場合、これは必須ではありません。さらに

は、あなたが必要とされていない「dataSrcの」オプションを指定していないが、それが設定されていない場合、私はそれが返されるJSONの形式であることを期待し信じる:だから

{ 
    data: [ {...}, {...} ] 
} 

それはですajaxリクエストに生のレスポンスを追加できる場合に役立ちます。

EDIT1:

[OK]をので、二重にチェックし、あなたが何かを変更することなく、この問題を解決するために、このような何かを行うことができますので、はい、それはJSONオブジェクトの「データ」属性に割り当てられたオブジェクトの配列をしたいんサーバー上であなたのAjaxオプションを次のように変更してください:

"ajax": { 
    "url": "Player/GetSetPlayers", 
    "dataSrc": function (json) { 
     // We need override the built in dataSrc function with one that will 
     // just return the object array instead of looking for a "data" 
     // attribute on the "json" object. Note if you ever want to add 
     // serverside sorting/filtering/paging you will need to move your table 
     // data to an attribute within the JSON object. 
     return json; 
    } 
} 

上記の両方の修正を行うと、おそらく良いことになります。

+0

私の質問が応答 –

+0

で更新されました@ lab labzデータを持つ予定の各列に "data"属性を設定して実行してみましたか?それは単なる "data: 'jsonAttrName'、"です。 – Adrian

関連する問題