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

时间:2015-10-19 10:43:49

标签: jquery sorting datatables

我从已排序的数据库中检索数据,有时我需要重置回初始加载顺序。我试过这个fnSortNeutral,它不适用于新的API DataTables 1.10。

然后我尝试了这个

https://datatables.net/forums/discussion/26430/fnsortneutral-fails-with-new-api

不确定这是做什么的,因为它重置了一些东西,但绝对没有回到原始的加载顺序,而是自己的排序顺序

$('#removesort').click( function() {
    table.order.neutral().draw();
});

我不能使用它,因为排序列不存在于Datatable上以便能够使用它进行排序,sort应用于数据库查询

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);

                            }
                      });

1 个答案:

答案 0 :(得分:1)

您是否尝试在'抽奖'之后放置'订单'?等。

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

在我的情况下,我只是使用

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

并且有效