数据表排序不起作用

问题描述 投票:0回答:1

我有一个数据表,我在其中填充了一些数据,但我需要在该表上启用排序操作。但是我的排序不起作用。这是我到目前为止所做的代码。

 $('#example').dataTable( { 
                                "processing": true,
                                "serverSide": true,
                                aaSorting: [[2, 'desc']],
                                "ajax": url,
                                "columns": [
                                    {"data" : "code"},        
                                    { "data": "description"},
                                    { "data" : "mrpString"},
                                    { "data":"unitDescription"},
                                    { "data":"moq"}
                                ],
                                 "columnDefs": [
                                             {
                                                 "targets": [ 0 ],
                                                 "visible": true,
                                                 "searchable": false,
                                                 "sortable" :false

                                             },
                                          {
                                                 "targets": [ 1 ],
                                                 "visible": true,
                                                 "searchable": true,
                                                 "sortable" :true

                                             },
                                          {
                                                 "targets": [ 2 ],
                                                 "visible": true,
                                                 "searchable": false

                                             },
                                          {
                                                 "targets": [ 3 ],
                                                 "visible": true,
                                                 "visible": true,
                                                 "searchable": true

                                             },
                                          {
                                                 "targets": [ 4 ],
                                                 "visible": true,
                                                 "visible": true,
                                                 "searchable": true

                                             }
                                         ], 

                                      "aoColumnDefs": [
                                                    { "bSortable": true, "aTargets": [0,1,2,3,4] }
                                                  ] ,  
 "rowCallback": function( row, data ) {
                                     $("td:eq(0)",row).html("<a href='"+data.url+"' target='_new'>"+data.code+"<//a/> ");
                                     //alert(data.parentCategoryId);
                                        /* $('td:eq(6)', row).html( '<input type="checkbox" name="selectedIds" value="'+data.id+'" />' ).attr("class","checkIds");
                                        $('td:eq(0)',row).attr('id','_'+data.id); */
                                 }

                            });
                    });

这是我已经完成搜索的代码也可以工作,但我想要排序 enanled,请有人帮忙

javascript datatables
1个回答
0
投票

我知道这是一个旧帖子..但是检查一下..

服务器端意味着你在服务器端做所有事情。在服务器上,无论使用什么方法为您的表获取数据,也负责对您的表进行分页和排序。我的排序不工作.. 然后我意识到我的服务器端方法没有进行排序!所以..简而言之,我将其添加到负责为我的表 (C#) 提供数据的服务器端方法或函数中: (注意:“数据”是我的数据表的对象列表)

var myJsonOrder = JsonConvert.DeserializeObject<List<DataTableOrder>>(Request.Params["JsonOrder"]);
// Sorting
if (myJsonOrder != null && myJsonOrder.Count > 0)
{
    var firstOrder = myJsonOrder.FirstOrDefault();

    switch (firstOrder.column)
    {
        case 1:
            data = firstOrder.dir == "asc" ? data.OrderBy(x => x.TripName).ToList() : data.OrderByDescending(x => x.TripName).ToList();
            break;
        case 2:
            data = firstOrder.dir == "asc" ? data.OrderBy(x => x.TripStartDate).ToList() : data.OrderByDescending(x => x.TripStartDate).ToList();
            break;
        case 3:
            data = firstOrder.dir == "asc" ? data.OrderBy(x => x.NumTravelers).ToList() : data.OrderByDescending(x => x.NumTravelers).ToList();
            break;
        case 4:
            data = firstOrder.dir == "asc" ? data.OrderBy(x => x.NumCardsAssigned).ToList() : data.OrderByDescending(x => x.NumCardsAssigned).ToList();
            break;
    }
}

请求中还有其他可用数据,例如列和搜索查询:

var myJsonColumns = JsonConvert.DeserializeObject<List<DataTableColumn>>(Request.Params["JsonColumns"]);
var myJsonOrder = JsonConvert.DeserializeObject<List<DataTableOrder>>(Request.Params["JsonOrder"]);
var myJsonSearch = JsonConvert.DeserializeObject<DataTableSearch>(Request.Params["JsonSearch"]);

编辑:抱歉,在我要去的时候学习这个..服务器上提供了列/订单/搜索数据,因为在我对数据表的 AJAX 调用中,我将数据传递给服务器:

inactiveTravelerDataTable = $("#inactive-traveler-list-data-table").dataTable({
        "processing": true,
        "serverSide": true,
        "jQueryUI": true,
        "searching": false,
        "dom": 'rtipl',
        "ajax": {
            "url": '/Trip/JsonInactiveTravelerList/',
            "data": function(d) {
                d.TripId = $('#TripId').val();
                d.JsonColumns = JSON.stringify(d.columns);
                d.JsonOrder = JSON.stringify(d.order);
                d.JsonSearch = JSON.stringify(d.search);
            },
            "type": "POST"
        }
        //.... Continued on...

希望这对某人有帮助。

问候,

© www.soinside.com 2019 - 2024. All rights reserved.