我正在尝试使用位于 DOM 中的对象数组来初始化数据表
我有简单的数据表初始化代码:
$(document).ready(function () {
$('#ManageSubReps').DataTable({
data: GetSRData(),
columns: [
{ "data": "username" },
{ "data": "AspNetUserRoleName" },
{ "data": "Name" },
{ "data": "Address" },
{ "data": "City" },
{ "data": "State" },
{ "data": "Zip" },
{ "data": "EmailAddress" },
{ "data": "HomePhone" },
{ "data": "CellPhone" },
{ "data": "New_Rep" },
{ "data": "Stand_By" },
{ "data": "DateApproved" },
{ "data": "AspNetUserID" }
]
});
});
我的 GetSRData 函数如下所示:
function GetSRData() {
return @Html.Raw(Model.JsonData)
}
我的服务器端代码如下所示:
public ActionResult ManagerSubReps(){
var model = new ManageSubRepsViewModel();
model.JsonData = JsonConvert.SerializeObject(new {data = _iManageSubRepsManager.GetSubRepsAsync(Session["CID"])});
return View(model);
}
我的数据片段如下所示:
{"data":[{"username":"01001MC","MASTER":null,"Name":"A name","Address":"105 Address Dr.","City":"Agawam","State":"MA","Zip":"89898","EmailAddress":"blerb@yahoo.com","HomePhone":"","CellPhone":"8767878767","New_Rep":"False","Stand_By":"False","DateApproved":null,"AspNetUserID":null,"AspNetUserRoleName":null},{"username":"01002RG","MASTER":"False","Name":"Blooby palooby","Address":"7 Eaton drive, gumbie@Gmail.Com","City":"Amherst","State":"MA","Zip":"35656","EmailAddress":"chumpy@GMAIL.COM","HomePhone":"","CellPhone":"8986786654","New_Rep":"False","Stand_By":"False","DateApproved":null,"AspNetUserID":null,"AspNetUserRoleName":null}]}
HTML:
<table id="ManageSubReps" class="compact display">
<thead>
<tr>
<th>Username</th>
<th>Role</th>
<th class="dt-left">Name</th>
<th class="dt-left">Address</th>
<th class="dt-left">City</th>
<th>State</th>
<th>Zip</th>
<th class="dt-left">Email</th>
<th>Home Phone</th>
<th>Cell Phone</th>
<th>New Rep</th>
<th>Stand By</th>
<th>Approved Date</th>
<th></th>
</tr>
</thead>
</table>
当我返回数据并尝试初始化数据表时,可能会发生两件事:
- 如果我删除 Json 对象的“数据”部分,则 datatales 将呈现数据表,但其中没有任何数据
- 如果我保留 Json 对象的“数据”部分,则数据表将给我错误:“为第 0 行、第 0 列请求未知参数‘0’”。这基本上意味着它无法区分数据并与数据形成数据表。
我检查了列数据,它完全匹配。我无法弄清楚问题是什么。
有人能帮忙吗?
编辑:我知道这个问题与数据是一个字符串有关,因为我在上面调用了 HTML.Raw() 。但是,我不确定如何在没有这个的情况下从模型传递数据
最佳答案
尝试使用 ajax
而不是数据和完全限定的 url( Controller /api 方法)来获取 ajax 数据:
$(document).ready(function() {
$('#ManageSubReps').DataTable( {
"processing": true,
"serverSide": true,
"ajax": "ManagerSubReps",
columns: [
{ "data": "username" },
{ "data": "AspNetUserRoleName" },
{ "data": "Name" },
{ "data": "Address" },
{ "data": "City" },
{ "data": "State" },
{ "data": "Zip" },
{ "data": "EmailAddress" },
{ "data": "HomePhone" },
{ "data": "CellPhone" },
{ "data": "New_Rep" },
{ "data": "Stand_By" },
{ "data": "DateApproved" },
{ "data": "AspNetUserID" }
]
} );
} );
引用https://datatables.net/examples/server_side/object_data.html了解更多详情。
关于javascript - 数据表 - DOM 源对象数组不会加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48448312/