簡體   English   中英

jQuery數據表和排序列

[英]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_0sSortDir_0感興趣, sSortDir_0分別與單擊的列和排序方向有關。

在控制器方法中,您將像這樣訪問參數:

var sortColumnIndex = Convert.ToInt32(Request["iSortCol_0"]);
var sortColumnDir = Request["sSortDir_0"];

然后,您需要將此以及其他參數合並到查詢中。

這是有關將服務器端數據表與MVC一起使用的文章

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM