[英]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.