jQuery datatable c# 服务器端默认排序列给出null

Posted

技术标签:

【中文标题】jQuery datatable c# 服务器端默认排序列给出null【英文标题】:jQuery datatable c# server side default sort column giving null 【发布时间】:2018-10-19 16:34:01 【问题描述】:

我有一个 jquery 数据表,我为其设置了一个默认的排序列,如下所示:

$('#datatable-responsive').DataTable(
                "oLanguage": 
                    sProcessing: "<img src='/images/gears.svg'>"
                ,
                order: ['3', 'desc'],

请注意这部分:

order: ['3', 'desc'],

现在默认的排序列应该是第 4 列 (0,1,2 => 3 (4th))

当我第一次加载页面时,我在 C# 操作中得到以下正确结果:

var sortColumnDir  = Request["order[0][dir]"];

第一次看起来不错,sorcolumndir 按要求是“desc”...

现在,当我第二次单击表格的头部以按升序对列进行排序时...我在这一行中得到一个空值:

 var sortColumnDir  = Request["order[0][dir]"]; // this is now null for some reason ?

当我在页面之间切换时,没有单击尝试将列 [3] 的顺序更改为升序,这总是好的...但是当我尝试将其更改为升序时,它会抛出异常并返回 null : (

任何想法家伙为什么会发生这种情况?我在这里做错了什么?

附:伙计们,如果用户没有单击以其他方式对其进行排序,或者其他一些列,我需要将此列 [3] 作为默认值始终按降序排列。

【问题讨论】:

有人吗? =) 【参考方案1】:

也许您必须编写一个循环才能找到要订购的正确 colmun。看起来像这样的东西:

 var o = 0; var orders = new List<DatatablesOrder>(); 
while (!string.IsNullOrEmpty(Request["order[" + o + "][column]"])) 
 
   orders.Add(new DatatablesOrder  Column = Convert.ToInt32(form["order[" + o +"][column]"]), 
   Dir = Request["order[" + o + "][dir]"] );
   o++; 
 

【讨论】:

【参考方案2】:

在js文件中使用这个

"order": [[3, "DESC"]],

在你的控制器中使用这个你可以获得默认的排序列和方向

 var sortColumnIndex = Convert.ToInt32(Request["iSortCol_0"]);
 var sortDirection = Request["sSortDir_0"]; // asc or desc

【讨论】:

以上是关于jQuery datatable c# 服务器端默认排序列给出null的主要内容,如果未能解决你的问题,请参考以下文章

如何在 asp.net c# 中将 JQuery DataTables 应用于 Gridview 以获取大数据(> 1000)?

JQuery Datatables 在所有可用页面上获取所有“选中”复选框

如何使用 jQuery dataTables 启用服务器端搜索?

在 JQuery Datatable 中选择另一个页面后如何重绘 Datatable?

jQuery DataTables - 无法重新初始化 DataTable

Datatable jquery服务器端仅适用于加载页面