如何使用我的数据表的延迟渲染功能
问题描述:
我有一个数据表,我希望使用推迟渲染上,我不知道什么问题,我的控制器方法返回一个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;
}
}
因此,一旦您执行了上述两项修正后,您可能会很满意。
我已经更新了我的问题,并附有回复 –
@ife labolz您是否尝试在每个将要有数据的列上设置“data”属性来运行此操作?它只是“data:'jsonAttrName',”。 – Adrian