【发布时间】:2016-05-10 17:50:52
【问题描述】:
我的视图中有一个这样的数据表:
<table id="tblProviders" style="font-size:x-small;width:100%; border: 1px solid black;">
<caption>Assigned Providers</caption>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Email</th>
<th>Phone</th>
<th>Role</th>
<th>Remove</th>
</tr>
</thead>
</table>
以及数据的赋值:
$("#tblProviders").dataTable({
bProcessing: true,
sAjaxSource: '@Url.Action("GetProvidersById")?id=' + $("#txtid").val(),
bJQueryUI: true,
sProcessing: "<img src='~/Images/spinner.gif' />",
dom: 'T<"clear">rtip',
"pageLength": 5,
bAutoWidth: false,
"oLanguage": {
sEmptyTable: "There are no Providers at this time",
sZeroRecords: "There are no Providers at this time"
},
"aoColumns": [
{ "sWidth": "1%", sClass: "smallFonts" },
{ "sWidth": "15%", sClass: "smallFonts" },
{ "sWidth": "15%", sClass: "smallFonts" },
{ "sWidth": "15%", sClass: "smallFonts" },
{ "sWidth": "15%", sClass: "smallfonts" },
{
"sWidth": "15%", sClass: "centerbutton", "sName": "UserId", "mRender": function (data, type, row) {
return "<button type='button' class='displaybutton' id='" + row[0] + "' onclick=RemoveProvider(this);return false; >Remove</button>";
}
}
],
tableTools: {
"sSwfPath": "../../Scripts/swf/copy_csv_xls_pdf.swf",
"aButtons": [
]
}
});
$("#tblProviders").dataTable().fnSetColumnVis(0, false);
otab = $("#tblProviders").dataTable();
otab.fnSort([[1, 'asc']]);
我知道我得到了正确的 JSON 数据:
[HttpGet]
public ActionResult GetProvidersId(string id)
{
return Json(new
{
aaData = Repository.GetProvidersById(id).Select(x => new String[] {
x.ID.ToString(),
x.FirstName + " " + x.LastName,
x.Email,
x.Phone,
x.Role,
})
}, JsonRequestBehavior.AllowGet);
}
但是没有一行显示出来。我在这里做错了什么?事实上,如果我通过在删除点放置一个调试点来调试表的加载,我会看到数据,但它永远不会显示。
【问题讨论】:
-
您使用的是什么版本的 DataTables?
-
@thirtydot 我正在使用 1.10.10
-
这是一个 jsFiddle,应该会有所帮助:jsfiddle.net/thirtydot/oec7rnd7(我正在使用 jsFiddle 的特殊策略来模拟 JSON 响应)。
mData很重要,至少对于我选择的数据格式而言。此外,您应该切换到新的 API,它不那么令人困惑。我会尽可能更新我的答案以使其有意义。 -
这是一个不使用
mData的示例,使用相同的数据格式,我相信您正在使用:jsfiddle.net/thirtydot/oec7rnd7/1。我认为您的问题是您没有像这样包装数据:{"data": [["id 1", "name 1", "email 1", "phone 1", "role 1"], ["id 2", "name 2", "email 2", "phone 2", "role 2"]]}。如果不是这样,我认为这是我从您问题中的代码中看不到的东西。
标签: datatables