使用 jQuery DataTables 恢复原始排序顺序

Posted

技术标签:

【中文标题】使用 jQuery DataTables 恢复原始排序顺序【英文标题】:Restore original sort order with jQuery DataTables 【发布时间】: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被删除了?正如我已经回答的那样,生成一个额外的列是可能的,但我想知道,如果数据表中已经存在一个简单的选项,我并不是要重新发明*** 【参考方案1】:

您是否尝试在“抽奖”之后下“订单”?喜欢。

.draw();
.order( [[ 1, 'asc' ], [ 2, 'asc' ]] )

就我而言,我只是使用

.draw().order( [[ 0, 'desc' ]] );

它可以工作

【讨论】:

以上是关于使用 jQuery DataTables 恢复原始排序顺序的主要内容,如果未能解决你的问题,请参考以下文章

Datatables快速入门开发--一款好用的JQuery表格插件

使用 Jquery Datatables 对数据排序属性中的值进行自定义排序

jquery datatables如何去掉搜索框和每页显示多少条数据

使用格式化数据进行渲染,使用 DataTables.net 中的原始数据进行排序

jquery.dataTables--插件使用方法

jquery之DataTables的使用