【发布时间】:2016-01-17 16:19:52
【问题描述】:
我从已排序的数据库中检索数据,有时我需要重置回初始加载顺序。我试过这个fnSortNeutral,它不适用于新的 API DataTables 1.10。
我已经试过了
https://datatables.net/forums/discussion/26430/fnsortneutral-fails-with-new-api
不确定这是做什么的,因为它重置了一些东西,但绝对不是回到原来的加载顺序,而是它自己的排序顺序
$('#removesort').click( function() {
table.order.neutral().draw();
});
我不能使用它,因为 Datatable 上不存在排序列以便能够使用它进行排序,排序应用于数据库查询
table
.order( [[ 1, 'asc' ], [ 2, 'asc' ]] )
.draw();
如何获取数据表以显示点击时从数据库检索到的原始加载顺序?
根据要求,这基本上是基本的正常代码,我可以找到很长的路要添加另一列进行排序,但如果可以在数据表中轻松重置顺序,我觉得添加另一个纯粹用于排序的字段过于复杂。这不可能吗?
var table = $('#example').DataTable( {
order: [],
"columnDefs": [ { "targets": 0, "orderable": false } ],
"sAjaxSource": "external/load",
"oLanguage": {
"sLoadingRecords": "",
"sEmptyTable": "No data found"
},
"fnServerData": function ( sSource, aoData, fnCallback, oSettings ) {
if($('#order'))
{
var order = $('#order').val();
aoData.push( { "name": "order", "value": order } );
}
setTimeout(function() {
oSettings.jqXHR = $.ajax( {
"dataType": 'json',
"type": "POST",
"url": sSource,
"data": aoData,
"timeout": 15000,
"success": fnCallback,
"complete" : function(){
},
"error": function (e) {
console.log(e.message);
}
});
},1000);
}
});
【问题讨论】:
-
您是从 Ajax 源代码还是从 HTML 获取数据?请发布您的表初始化代码。
-
您是否尝试过添加一个隐藏列,在其中插入一个表示原始排序的整数?你可以直接从 sql 生成这个值。
-
请展示您的原始数据源的样子。
-
奇怪的是我的cmets被删除了?正如我已经回答的那样,生成一个额外的列是可能的,但我想知道,如果数据表中已经存在一个简单的选项,我并不是要重新发明轮子
标签: jquery sorting datatables