gpt4 book ai didi

javascript - JQuery DataTables 无法识别加载的数据

转载 作者:行者123 更新时间:2023-12-03 09:11:56 24 4
gpt4 key购买 nike

由于某种原因,我的 JQuery DataTable 正在向表中添加数据,但它仍然显示“0 到 0 个条目。尝试使用搜索框实际上并没有搜索我的数据,并且按我的一列排序确实如此不改变顺序。我在 firebug 中没有收到任何错误,所以我真的不知道从这里去哪里。感谢您的查看。

这是 JavaScript:

var oTable = $("#tblAddUsers").dataTable({
"processing": true,
"bSearching": true,
"bSort": true,
"bFilter": true,
sAjaxSource: '@Url.Action("GetUserList", "ClassSchedule")',
aoColumns: [
{
bVisible: false
},
{
sWidth: "250px",
bSortable: true

},
{
mRender: function () { return '<button class="clAddUser">Add</button>'; },
sWidth: "200px"
}
],

fnRowCallback: function (nRow, aData, iDisplayIndex, iDisplayIndexFull) {

$('button', nRow).on('click', function () {
test(aData[0]);
});
}


});

我的 Controller 代码:

public JsonResult GetUserList()
{
var addUserList = (from u in db.t_user
join m in db.t_user_membership on u.user_id equals m.user_id
where m.membership_date > DateTime.Today
select new { user_id = u.user_id, full_name = u.first_name + " " + u.last_name }).ToList();

return Json(new { aaData = addUserList.Select(x => new string [] { x.user_id.ToString(), x.full_name }) }, JsonRequestBehavior.AllowGet);
}

我的 GET 响应如下所示:

{"aaData":[["2","test Spouse"],["3","David Parker"]]}

这是我的 HTML:

<div id="AddUserPopup" style="display:none" title="">
<span>Add Users</span>
<div style="width: 500px; height: 300px;" id="dialog">
<table id="tblAddUsers">
<thead>
<tr>
<th></th>
<th>User Name</th>
<th></th>
</tr>
</thead>
<tbody>

</tbody>
</table>

</div>

这是我得到的屏幕截图:

enter image description here

最佳答案

当使用服务器端数据源时,您需要在服务器代码中处理搜索、排序和分页。

查看从服务器传递到&的参数 here 。您没有传递任何此类信息 - 例如,您会得到 Showing 0 of 0 items,因为您没有返回 iTotalRecordsiTotalDisplayRecords json 数据。返回的对象应如下所示:

return Json(new
{
param.sEcho,
iTotalRecords = rowCount,
iTotalDisplayRecords = rowCount,
aaData = result,
}, JsonRequestBehavior.AllowGet)

如果您查看 Firebug 的 Net 面板,您可以看到加载数据表时请求中发送的所有参数。您需要在服务器代码中获取这些内容并在查询中使用它们,例如用于搜索的 sSearch、用于分页的 iDisplayStartiDisplayLength

我会做这样的事情:

public JsonResult GetUserList(jQueryDataTableParamModel p)
{
var addUserList = from u in db.t_user
join m in db.t_user_membership on u.user_id equals m.user_id
where m.membership_date > DateTime.Today
select new mymodel
{
user_id = u.user_id,
full_name = u.first_name + " " + u.last_name
};
//paging
var displayedItems = addUserList.Skip(p.iDisplayStart).Take(p.iDisplayLength);
var rowCount = addUserList.Count();

// project into json for datatable
var result = from d in displayedItems
select new object[]
{
d.user_id,
d.full_name
};
return Json(new
{
param.sEcho,
iTotalRecords = rowCount,
iTotalDisplayRecords = rowCount,
aaData = result,
}, JsonRequestBehavior.AllowGet);
}

jQueryDataTableParamModel 参数来自关于在 MVC 中使用服务器端数据表的好教程 here

关于javascript - JQuery DataTables 无法识别加载的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32053336/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com