4

使用 tablesorter 的寻呼机插件可以进行服务器端分页吗?看起来默认选项要求您一次将所有行加载到浏览器的内存中。由于我有这么多记录,这实际上是不可能的,我宁愿一次加载一页。tablesorter 寻呼机插件是否支持此功能?如果是这样,我错过了什么,因为文档显示了这个例子:

// process ajax so that the data object is returned along with the total number of rows
    // example: { "data" : [{ "ID": 1, "Name": "Foo", "Last": "Bar" }], "total_rows" : 100 }
    ajaxProcessing: function(ajax){
      if (ajax && ajax.hasOwnProperty('data')) {
        // return [ "data", "total_rows" ];
        return [ ajax.data, ajax.total_rows ];
      }
    },

那,以及我能够找到的其他示例,看起来它一次将所有行加载到 ajax 处理函数的内存中。

http://mottie.github.com/tablesorter/docs/example-pager.html

更新:

http://mottie.github.com/tablesorter/docs/example-pager-ajax.html看到 AJAX 寻呼机后,我还有几个问题:

  1. 排序列表 = [[2,0],[3,0]]。在Ajax URL中,我是否自己转换为&col[2]=0&col[3]=0的真实格式?
  2. ajaxProcessing 的文档说:

    处理 ajax 以便返回以下信息: // [ total_rows (number), rows (array of array), headers (array; optional) ]

看起来 total_rows 是数据库中的行数,而不是浏览器内存中的行数或表中显示的行数。那是对的吗?下一个问题:我了解数组“行”数组的格式。但是实际上应该包含哪些行?文档说它是“所有行”,但它只是表中显示的行的当前页面吗?是用户迄今为止翻阅的所有行吗?我认为这不是数据库中的所有行,因为这会完全破坏这一点。

4

1 回答 1

2

要包含排序列和方向,只需col在 url 模板中的示例中包含服务器端变量:

ajaxUrl : "http:/mydatabase.com?page={page}&size={size}&{sortList:col}&{filterList:fcol}",

{page}是用户正在查看的当前页面,{size}是要在浏览器中显示的行数。

包括&{sortList:col}col匹配用于排序列和方向的服务器端变量)以包括排序。并包含&{filterLost:fcol}fcol匹配用于过滤列的服务器端变量)以包含任何过滤。寻呼机插件为您将字符串格式化为&col[2]=0&col[3]=0(或其他)。

如果您查看该ajaxProcessing函数,它所做的只是重新格式化来自服务器的当前行集的 ajax 数据以显示(不是所有行)以匹配此所需格式:

// process ajax so that the following information is returned:
// [ total_rows (number), rows (array of arrays), headers (array; optional) ]
// example:
[
  100,  // total rows
  [
    [ "row1cell1", "row1cell2", ... "row1cellN" ],
    [ "row2cell1", "row2cell2", ... "row2cellN" ],
    ...
    [ "rowNcell1", "rowNcell2", ... "rowNcellN" ]
  ],
  [ "header1", "header2", ... "headerN" ] // optional
]

如果您的数据库中有不确定的行数,只需 return 0... 它应该仍然可以工作,但是totalPagesandtotalRows变量将不准确。

于 2013-03-08T21:37:57.557 回答