显示按字母顺序排列的搜索结果时如何修改行数

Posted

技术标签:

【中文标题】显示按字母顺序排列的搜索结果时如何修改行数【英文标题】:How to modify row counts when displaying alphabetized search results 【发布时间】:2015-11-03 11:06:24 【问题描述】:

我正在使用DataTables 创建一个能够动态过滤上下文的表。我正在遵循基本示例,here。

但是,我想做一个自定义:在我的表格中显示按字母顺序排列的结果,每个字母都有一个“标题行”。例如:

A
- Apple
- Avocado
B
- Bear
- Button
C
- Car

我已成功完成此操作(在服务器端使用Django 模板进行输出),但默认情况下显示的页脚标签 Datatables 现在不正确,因为它计算了标题行。在上面的示例中,它显示为:

Showing 1 to 8 of 8 entries 

什么时候应该读:

Showing 1 to 5 of 5 entries.

进一步挖掘,信息结果通过 API 访问为"language": "info": "Showing START to END of TOTAL entries",

我可以从我的 Django 模板中计算标题行并将其保存为变量(例如var headercount = 3)。

如何修改 DataTables API 中的 STARTENDTOTAL,以便它们在循环时在每个页面上都准确无误?

【问题讨论】:

【参考方案1】:

解决方案 #1

您可以使用infoCallback 选项定义一个函数,该函数将在表格信息即将显示时调用。

例如,可以使用以下代码实现默认行为。

var table = $('#example').DataTable(
   "infoCallback": function(settings, start, end, max, total, pre)
      return "Showing " + start + " to " + end + " of " + total + " entries"
         + ((total !== max) ? " (filtered from " + max + " total entries)" : "");
           
);

您需要相应地调整数字以避免计算标题。

有关代码和演示,请参阅this jsFiddle。

解决方案 #2

替代解决方案是使用 javascript 而不是静态 html 来按字母顺序排列表格内容,类似于 Row grouping example。

然后信息面板将自动包含正确的数字,因为标题行是作为附加节点动态添加的,DataTables 不将其计为行。

有关代码和演示,请参阅 this jsFiddle。

解决方案 #3

使用AlphabetSearch plugin,它增加了对字母搜索的支持。

【讨论】:

以上是关于显示按字母顺序排列的搜索结果时如何修改行数的主要内容,如果未能解决你的问题,请参考以下文章

在自定义 foreach 循环中按字母顺序对结果进行排序

NSArray 的值,希望按字母顺序显示在部分中。如何分配到正确的部分?

按字母顺序排列的名称和描述列表

MySQL按X排序然后分组按Y然后按字母顺序排列

6.12 按字母顺序排列字符串

如何将 NSArray 拆分为按字母顺序排列的部分以与索引表视图一起使用