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

ali*_*s51 11 django jquery datatables datatables-1.10

我正在使用DataTables创建一个能够动态过滤上下文的表.我在这里遵循基本的例子.

但是,我想进行一次自定义:在我的表格中显示字母表结果,每个字母都有一个"标题行".例如:

A
- Apple
- Avocado
B
- Bear
- Button
C
- Car
Run Code Online (Sandbox Code Playgroud)

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

Showing 1 to 8 of 8 entries 
Run Code Online (Sandbox Code Playgroud)

什么时候应该读:

Showing 1 to 5 of 5 entries.
Run Code Online (Sandbox Code Playgroud)

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

我能够将标题行计数并保存为var headercount = 3我的Django模板中的变量(例如).

如何修改START,END以及TOTAL在数据表API,以便通过循环时,他们是准确的每一页上?

Gyr*_*com 8

解决方案#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)" : "");
   }        
});
Run Code Online (Sandbox Code Playgroud)

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

有关代码和演示,请参阅此jsFiddle.

解决方案#2

替代解决方案是使用JavaScript而不是静态HTML来按字母顺序排列表内容,类似于行分组示例.

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

有关代码和演示,请参阅此jsFiddle.

解决方案#3

使用AlphabetSearch插件,增加了对字母搜索的支持.