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

5

我已经从数据库检索到已排序的数据,有时需要重置回初始加载顺序。我尝试了这个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();

如何使数据表格在点击时显示从数据库检索到的原始加载顺序?

按照要求,这基本上是正常工作的基本代码,我可以找到一个长路来添加另一列进行排序,但是如果可以在datatables中轻松重置顺序,我感觉我正在过度复杂化添加另一个仅用于排序的字段。这不可能吗?

                      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获取的?请发布您的表格初始化代码。 - Gyrocode.com
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - nowhere
请展示一下您的原始数据源是什么样子。 - davidkonrad
我的评论为什么被删除了?我已经回复说生成一个额外的列是可能的,但我想知道如果datatables中已经存在一个简单的选项,我不想重复造轮子。 - adam gouldie
1个回答

3
你是否尝试过在“绘制”之后放置“订单”?例如:
.draw();
.order( [[ 1, 'asc' ], [ 2, 'asc' ]] )

在我的情况下,我只是使用
.draw().order( [[ 0, 'desc' ]] );

而且它能够正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接