jQuery DataTable中按主键BusinessId实现数据降序排序问题咨询
问题原因
jQuery DataTable 初始化时默认会启用前端自动排序功能,默认按表格第一列升序重新排列内容,直接覆盖了你后端返回、视图渲染时已经排好的BusinessId降序顺序,所以才会出现后端排序不生效的问题。
解决方法
你可以根据自己的需求选以下任意一种方案:
方案1:禁用前端自动排序(最简单,不需要修改表格结构)
如果你不需要用户点击表头手动调整排序,直接关闭DataTable的排序功能即可,会完全保留你后端返回的排序结果:
$('#tblBusinessData').DataTable({ ordering: false });
方案2:保留前端排序功能,指定默认按BusinessId降序
如果你需要保留用户点击表头排序的能力,按以下步骤操作:
- 先在表格中增加BusinessId隐藏列:
找到<thead>的表头行,添加隐藏的BusinessId表头:
找到<th style="display:none">@Html.DisplayNameFor(model => model.BusinessId)</th><tbody>的行模板,对应位置添加隐藏的BusinessId单元格:<td style="display:none">@item.BusinessId</td> - 修改DataTable初始化配置,指定按该隐藏列降序排列。注意列索引从0开始计数,如果你把BusinessId列放在表头最后一位,假设总共有5个可见列,那BusinessId的索引就是5,调整
order配置中的索引值即可:$('#tblBusinessData').DataTable({ order: [[5, 'desc']] });
内容的提问来源于stack exchange,提问作者nischalinn
相关产品推荐
相关产品推荐

