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?