【问题标题】:jquery data table and sorting columnsjquery数据表和排序列
【发布时间】:2016-01-26 11:56:04
【问题描述】:

我正在使用 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 = ...
   ...
}

【问题讨论】:

    标签: javascript jquery asp.net-mvc datatable datatables


    【解决方案1】:

    您可以像这样绑定“订单”事件:

    $('#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);
    
    });
    

    in plugin reference

    【讨论】:

      【解决方案2】:

      通过指定"serverSide": true,,数据表将默认将信息添加到您需要在服务器端代码中使用的请求中。如果您查看 Firebug Network 面板,您将能够看到带有查询字符串参数的请求。有关完整的参数列表,请参阅 here。请注意,该链接指向 v1.9 文档,因为您正在使用它。

      所以对于排序,你会对iSortCol_0sSortDir_0 感兴趣,它们分别与点击的列和排序方向相关。

      在您的控制器方法中,您可以像这样访问参数:

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

      然后您需要将此参数和其他参数合并到您的查询中。

      这是一个 article 使用 MVC 的服务器端数据表

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多