【问题标题】:How to avoid pagination reset while sorting datatables排序数据表时如何避免分页重置
【发布时间】:2017-04-12 04:14:07
【问题描述】:

我有一个简单的jquery-datatable,它允许基本的sorting 和pagination 功能。下面考虑data-tablessn-p

$(document).ready(function() {
  $('#example').dataTable({
    "sPaginationType": "full_numbers"
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.0/jquery.dataTables.min.js"></script>

<link href="http://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.0/css/jquery.dataTables.css" rel="stylesheet" />

<table cellpadding="0" cellspacing="0" border="0" class="dataTable" id="example">
  <thead>
    <tr>
      <th>Rendering engine</th>
      <th>Browser</th>
      <th>Platform(s)</th>
      <th>Engine version</th>
      <th>CSS grade</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Trident</td>
      <td>Internet Explorer 4.0</td>
      <td>Win 95+</td>
      <td> 4</td>
      <td>X</td>
    </tr>
    <tr>
      <td>Trident</td>
      <td>Internet Explorer 5.0</td>
      <td>Win 95+</td>
      <td>5</td>
      <td>C</td>
    </tr>
    <tr>
      <td>Trident</td>
      <td>Internet Explorer 5.5</td>
      <td>Win 95+</td>
      <td>5.5</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Trident</td>
      <td>Internet Explorer 6</td>
      <td>Win 98+</td>
      <td>6</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Trident</td>
      <td>Internet Explorer 7</td>
      <td>Win XP SP2+</td>
      <td>7</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Trident</td>
      <td>AOL browser (AOL desktop)</td>
      <td>Win XP</td>
      <td>6</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Gecko</td>
      <td>Firefox 1.0</td>
      <td>Win 98+ / OSX.2+</td>
      <td>1.7</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Gecko</td>
      <td>Firefox 1.5</td>
      <td>Win 98+ / OSX.2+</td>
      <td>1.8</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Gecko</td>
      <td>Firefox 2.0</td>
      <td>Win 98+ / OSX.2+</td>
      <td>1.8</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Gecko</td>
      <td>Firefox 3.0</td>
      <td>Win 2k+ / OSX.3+</td>
      <td>1.9</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Gecko</td>
      <td>Camino 1.0</td>
      <td>OSX.2+</td>
      <td>1.8</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Gecko</td>
      <td>Camino 1.5</td>
      <td>OSX.3+</td>
      <td>1.8</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Gecko</td>
      <td>Netscape 7.2</td>
      <td>Win 95+ / Mac OS 8.6-9.2</td>
      <td>1.7</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Gecko</td>
      <td>Netscape Browser 8</td>
      <td>Win 98SE+</td>
      <td>1.7</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Gecko</td>
      <td>Netscape Navigator 9</td>
      <td>Win 98+ / OSX.2+</td>
      <td>1.8</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Gecko</td>
      <td>Mozilla 1.0</td>
      <td>Win 95+ / OSX.1+</td>
      <td>1</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Gecko</td>
      <td>Mozilla 1.1</td>
      <td>Win 95+ / OSX.1+</td>
      <td>1.1</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Gecko</td>
      <td>Mozilla 1.2</td>
      <td>Win 95+ / OSX.1+</td>
      <td>1.2</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Gecko</td>
      <td>Mozilla 1.3</td>
      <td>Win 95+ / OSX.1+</td>
      <td>1.3</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Gecko</td>
      <td>Mozilla 1.4</td>
      <td>Win 95+ / OSX.1+</td>
      <td>1.4</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Gecko</td>
      <td>Mozilla 1.5</td>
      <td>Win 95+ / OSX.1+</td>
      <td>1.5</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Gecko</td>
      <td>Mozilla 1.6</td>
      <td>Win 95+ / OSX.1+</td>
      <td>1.6</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Gecko</td>
      <td>Mozilla 1.7</td>
      <td>Win 98+ / OSX.1+</td>
      <td>1.7</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Gecko</td>
      <td>Mozilla 1.8</td>
      <td>Win 98+ / OSX.1+</td>
      <td>1.8</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Gecko</td>
      <td>Seamonkey 1.1</td>
      <td>Win 98+ / OSX.2+</td>
      <td>1.8</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Gecko</td>
      <td>Epiphany 2.20</td>
      <td>Gnome</td>
      <td>1.8</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Webkit</td>
      <td>Safari 1.2</td>
      <td>OSX.3</td>
      <td>125.5</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Webkit</td>
      <td>Safari 1.3</td>
      <td>OSX.3</td>
      <td>312.8</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Webkit</td>
      <td>Safari 2.0</td>
      <td>OSX.4+</td>
      <td>419.3</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Webkit</td>
      <td>Safari 3.0</td>
      <td>OSX.4+</td>
      <td>522.1</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Webkit</td>
      <td>OmniWeb 5.5</td>
      <td>OSX.4+</td>
      <td>420</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Webkit</td>
      <td>iPod Touch / iPhone</td>
      <td>iPod</td>
      <td>420.1</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Webkit</td>
      <td>S60</td>
      <td>S60</td>
      <td>413</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Presto</td>
      <td>Opera 7.0</td>
      <td>Win 95+ / OSX.1+</td>
      <td>-</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Presto</td>
      <td>Opera 7.5</td>
      <td>Win 95+ / OSX.2+</td>
      <td>-</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Presto</td>
      <td>Opera 8.0</td>
      <td>Win 95+ / OSX.2+</td>
      <td>-</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Presto</td>
      <td>Opera 8.5</td>
      <td>Win 95+ / OSX.2+</td>
      <td>-</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Presto</td>
      <td>Opera 9.0</td>
      <td>Win 95+ / OSX.3+</td>
      <td>-</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Presto</td>
      <td>Opera 9.2</td>
      <td>Win 88+ / OSX.3+</td>
      <td>-</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Presto</td>
      <td>Opera 9.5</td>
      <td>Win 88+ / OSX.3+</td>
      <td>-</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Presto</td>
      <td>Opera for Wii</td>
      <td>Wii</td>
      <td>-</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Presto</td>
      <td>Nokia N800</td>
      <td>N800</td>
      <td>-</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Presto</td>
      <td>Nintendo DS browser</td>
      <td>Nintendo DS</td>
      <td>8.5</td>
      <td>C/A<sup>1</sup></td>
    </tr>
    <tr>
      <td>KHTML</td>
      <td>Konqureror 3.1</td>
      <td>KDE 3.1</td>
      <td>3.1</td>
      <td>C</td>
    </tr>
    <tr>
      <td>KHTML</td>
      <td>Konqureror 3.3</td>
      <td>KDE 3.3</td>
      <td>3.3</td>
      <td>A</td>
    </tr>
    <tr>
      <td>KHTML</td>
      <td>Konqureror 3.5</td>
      <td>KDE 3.5</td>
      <td>3.5</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Tasman</td>
      <td>Internet Explorer 4.5</td>
      <td>Mac OS 8-9</td>
      <td>-</td>
      <td>X</td>
    </tr>
    <tr>
      <td>Tasman</td>
      <td>Internet Explorer 5.1</td>
      <td>Mac OS 7.6-9</td>
      <td>1</td>
      <td>C</td>
    </tr>
    <tr>
      <td>Tasman</td>
      <td>Internet Explorer 5.2</td>
      <td>Mac OS 8-X</td>
      <td>1</td>
      <td>C</td>
    </tr>
    <tr>
      <td>Misc</td>
      <td>NetFront 3.1</td>
      <td>Embedded devices</td>
      <td>-</td>
      <td>C</td>
    </tr>
    <tr>
      <td>Misc</td>
      <td>NetFront 3.4</td>
      <td>Embedded devices</td>
      <td>-</td>
      <td>A</td>
    </tr>
    <tr>
      <td>Misc</td>
      <td>Dillo 0.8</td>
      <td>Embedded devices</td>
      <td>-</td>
      <td>X</td>
    </tr>
    <tr>
      <td>Misc</td>
      <td>Links</td>
      <td>Text only</td>
      <td>-</td>
      <td>X</td>
    </tr>
    <tr>
      <td>Misc</td>
      <td>Lynx</td>
      <td>Text only</td>
      <td>-</td>
      <td>X</td>
    </tr>
    <tr>
      <td>Misc</td>
      <td>IE Mobile</td>
      <td>Windows Mobile 6</td>
      <td>-</td>
      <td>C</td>
    </tr>
    <tr>
      <td>Misc</td>
      <td>PSP browser</td>
      <td>PSP</td>
      <td>-</td>
      <td>C</td>
    </tr>
    <tr>
      <td>Other browsers</td>
      <td>All others</td>
      <td>-</td>
      <td>-</td>
      <td>U</td>
    </tr>
  </tbody>
</table>

所以如果你看到这个功能,每当你paginate到其他页面并点击列排序时,它实际上会重置pagination。

这是预期的行为吗?有没有办法克服这个?

浏览了 SO 中的其他各种帖子,但没有一个是关于解决这个问题的。

【问题讨论】:

  • 你能做一个小提琴并分享那个小提琴的链接吗?
  • 是的,这是预期行为,因为在进行排序时,您需要查看排序后的第一条记录。
  • @MayankPandeyz 我添加了 sn-p 而不是 jsfiddle,因为它在 SO 中非常可取..
  • @AlivetoDie.. 有道理.. 所以这个问题没有解决方法吗?
  • @AlivetoDie 你是对的,我在这里也看到了同样的行为:jsfiddle.net/cubttgow/23

标签: jquery datatables


【解决方案1】:

基于线程上的通信:-https://datatables.net/forums/discussion/21001/how-to-keep-current-page-after-sorting

调查结果是:-

如果您的意思是单击标题以触发排序,那么是的,这将始终让您跳回第一页,如果不修改 DataTables 或将您自己的排序/单击侦听器应用于标题,则无法解决元素。

所以基本上默认情况下这是不可能的(意味着数据表不提供此功能)。

您可以向datatables Site 提出问题并要求他们这样做,并将其添加为现有库的更新。

也许他们会这样做。

【讨论】:

  • 我认为他们不会这样做,因为在线程中讨论的许多情况下这没有意义。所以我宁愿对这些解释感到满意,并告诉我的客户。 . :)
  • 您可以尝试提出问题,因为它似乎是新功能。还有applying your own sort / click listener to the header elements. and on that click try to redraw table with page number and your own sorting。顺便说一句,我实际上也不知道该怎么做。):)
  • @GuruprasadRao,我们遇到了类似的问题。你有没有找到任何替代方案来实现这个?
猜你喜欢
  • 1970-01-01
  • 2016-06-22
  • 1970-01-01
  • 2018-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-11
相关资源
最近更新 更多