如何使用我的数据表的延迟渲染功能

问题描述:

我有一个数据表,我希望使用推迟渲染上,我不知道什么问题,我的控制器方法返回一个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 
    } 
] 

我认为你需要对需要从返回的数据填充每一列指定一个“数据”属性。否则,它不知道json对象上的哪个属性会传递给每一列。如果您将数据定义为数组的数组而不是数组,则这不是必需的。

另外,你没有指定哪个不需要“DATASRC”选项,但如果不设置它,我相信,它预计返回的JSON是形式:

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

因此,这将如果您可以添加对ajax请求的原始响应,将会很有帮助。

EDIT1:

确定这样的双重检查,是的,它确实想分配到“数据”属性的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

@ife labolz您是否尝试在每个将要有数据的列上设置“data”属性来运行此操作?它只是“data:'jsonAttrName',”。 – Adrian