服务器端排序的数据在数据表中没有以相同的顺序显示
Posted
技术标签:
【中文标题】服务器端排序的数据在数据表中没有以相同的顺序显示【英文标题】:Server side sorted data not showing in same order in Datatables 【发布时间】:2018-12-07 02:39:10 【问题描述】:我正在使用数据表来显示数据库中的数据。我正在使用 CodeIgniter 进行服务器端脚本。这是表格图片
在我的服务器端编码中,我按国家和降序查询我的数据库顺序。
我已检查 CodeIgniter 选择查询以进行调试,即
$this->db->get_compiled_select()
它正在显示
'SELECT *
FROM `tmp`
ORDER BY `country` DESC'
这里 tmp 是我的数据库名称,它运行良好。
这是我从数据库中获取的 json 响应——(由于文本很长,我无法向您展示整个 JSON 响应。这就是为什么我使用一些在线 json 解析站点来汇总我的数据的原因。)
我的 json 响应根据对数据库的查询显示数据,即按 desc 顺序显示国家/地区列。这就是为什么第一个对象显示 "Zimbabwe"。但在数据表中,它显示的是其他数据,即 “Andora”。
这是我的 javascript -
<script type="text/javascript">
$(document).ready( function ()
$('#myTable').DataTable(
"responsive": true,
"processing": true,
"serverSide": true,
"ajax":
"url": "http://localhost/adminDemo/admin/test",
"type": "POST"
,
"columnDefs" : [
"width" : "20%", "targets" : 7,
"width" : "30%", "targets" : 5,
"orderable": false, "targets": 7 //Don't order the action column
]
);
);
</script>
如果我在datatables参数中设置了"order": [[ 6, "desc" ]],那么在得到json响应后会进行排序。我不想添加客户端脚本来订购一列。我只想在数据表中使用排序的 json 响应。谁能帮我解决这个问题?
【问题讨论】:
只需将orderable
设置为false
否则数据将按照datatable
本身定义的默认顺序显示
如果我将 orderable 设置为 false,那么在获得 json 响应后我无法对列进行排序。
所以最好使用数据表排序而不是服务器端排序
这就是为什么我要问有没有办法像对数据表一样处理 json 响应?如果我设置 "ordering": false 那么它会根据 json 响应显示,但问题是我无法手动排序。希望你理解兄弟。
可能对每个单独的列进行排序对您有所帮助,请参阅:datatables.net/examples/basic_init/multi_col_sort.html
【参考方案1】:
解决该问题的一个简单方法是,只需为 order
选项指定空的 []
。
$('#example').DataTable(
"order": []
);
DataTables 在初始化期间没有应用排序。行按 DataTables 读取的顺序显示(即,如果来自 DOM,则为来自 DOM 的原始顺序,如果来自 Ajax/数据,则为数据数组):
来源:DataTable:Order
【讨论】:
是的,默认情况下数据表采用第一列对整个数据进行排序。通过这种方式,最初,我们可以根据 json 顺序显示数据。感谢您的信息。以上是关于服务器端排序的数据在数据表中没有以相同的顺序显示的主要内容,如果未能解决你的问题,请参考以下文章
求助:怎样在excel表格中查找后实现自动按照查找顺序排序?