我在我的MVC应用程序中使用jQuery数据表,第一次从服务器发送数据并且工作正常但是当我想用SignalR请求更新表时,它会提供所请求的未知参数。
HTML
<table id="tblEmployeeOut" class=" table table-striped table-bordered table-hover">
<thead>
<tr>
<th>
Id
</th>
<th>
Name
</th>
</tr>
</thead>
<tbody>
@foreach (var item in employeeOut)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.EnrollNumber)
</td>
<td>
<span> @item.FirstName @item.LastName</span>
</td>
</tr>
}
</tbody>
</table>
脚本
$('#tblEmployeeOut').dataTable({
bLengthChange: false,
"dom": '<"top"i>rt<"bottom"flp><"clear">',
sPaginationType: 'full_numbers',
bFilter: false,
bInfo: false,
iDisplayLength: 5,
"language": {
"emptyTable": " No Clients"
},
"aoColumns":
[
{ "sName": "Id" },
{ "sName": "Name" }
]
});
在第二张图片中,您可以看到返回的“Json”,在第三张图片中可以看到jQuery数据表显示的警告。
答案 0 :(得分:2)
你不能简单地打电话
datatable.fnAddData(stock); // stock is an array of objects
不使用mData。
您需要提供其他类型的输入数据。 (选中this并导航到fnAddData的规范。
您可能想尝试一下我刚才提出的简单功能:
function objArrayToStringArray(array) {
return array.map(function (item) {
return [item["Id"], item["Name"]];
});
}
并像这样使用它:
var tmp = objArrayToStringArray(stock);
$('#tblEmployeeOut').dataTable().fnAddData(tmp);
希望这有帮助。
<强>更新强>
如果对这样的列使用mData
属性:
"aoColumns":
[
{ "sName": "Id", "mData": "Id" },
{ "sName": "Name", "mData": "Name" }
]
然后你可以像你想要的那样轻松地调用它:
$('#tblEmployeeOut').dataTable().fnClearTable();
$('#tblEmployeeOut').dataTable().fnAddData(stock);