[英]jquery data table and sorting columns
我正在使用jquery数据表在网格内显示大量数据。 我实现了服务器端分页,但是正在努力对数据服务器端进行排序。
下面是我的数据表初始化,这里的主题不是排序查询的答案,我只需要一种方法就可以将单击哪一列的信息传递给控制器,我将进行排序。
('#myTable').dataTable({
"processing": true,
"serverSide": true,
"info": false,
"pageLength": 10,
"lengthChange": false,
"stateSave": false,
"bPaginate": true,
"bFilter": false,
"sPaginationType": "full_numbers",
"info": "Page _PAGE_ from _PAGES_",
"infoEmpty": "No data",
"oPaginate": {
"sFirst": "First",
"sPrevious": "Previous",
"sNext": "Next",
"sLast": "Last"
},
"ajax": {
"url": "@string.Format("{0}://{1}{2}", Request.Url.Scheme, Request.Url.Authority, Url.Content("~"))/MyController/GetData",
"type": "GET",
"data": function (d) {
.....
},
},
preDrawCallback: function (settings) {
...
},
drawCallback: function (settings) {
...
},
"columns": [
{ "data": "Id" },
{ "data": "FirstName" },
{ "data": "LastName" },
{ "data": "Age" }
],
"columnDefs": [
{
targets: [0],
orderable: false
},
{
render: function (data, type, row) {
...
}
],
"order": [[0, "desc"]]
});
public ActionResult GetData(){
var sortColumn = ...
...
}
您可以像这样绑定“ order”事件:
$('#myTable').on( 'order.dt', function () {
var order = table.order();
var column_selected = order[0][0];
var order_way= order[0][1];
doStuff(column_selected ,order_way);
});
在插件参考中查看
通过指定"serverSide": true,
默认情况下会将信息添加到您需要在服务器端代码中使用的请求。 如果您在Firebug的“网络”面板中查看,您将能够看到带有querystring参数的请求。 有关完整的参数列表,请参见此处 。 请注意,该链接指向v1.9文档,因为这就是您所使用的样子。
因此,对于排序,您iSortCol_0
和sSortDir_0
感兴趣, sSortDir_0
分别与单击的列和排序方向有关。
在控制器方法中,您将像这样访问参数:
var sortColumnIndex = Convert.ToInt32(Request["iSortCol_0"]);
var sortColumnDir = Request["sSortDir_0"];
然后,您需要将此以及其他参数合并到查询中。
这是有关将服务器端数据表与MVC一起使用的文章
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.