服务器端与tablesorter的分页

时间:2013-03-07 23:54:32

标签: tablesorter

使用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. sortList = [[2,0],[3,0]]。在Ajax URL中,我是否将转换为& col [2] = 0& col [3] = 0的实际格式?
  2. ajaxProcessing的文档说:

    处理ajax以便返回以下信息: // [total_rows(number),rows(数组数组),headers(数组;可选)]

  3. 看起来total_rows是数据库中的行数,而不是浏览器内存中的行数或表中显示的行数。那是对的吗?下一个问题:我理解“行”数组数组的格式。但实际上哪些行应该在其中呢?文档说它是“所有行”,但它只是表中显示的当前行页面?到目前为止用户已经分页的是所有行吗?我假设它不是数据库中的所有行,因为这会完全破坏这一点。

1 个答案:

答案 0 :(得分:2)

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

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

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

包括&{sortList:col}col与服务器端变量匹配,用于排序列和方向)以包括排序。并且包括&{filterLost:fcol}(与fcol匹配服务器端varibale以过滤列)以包括任何过滤。寻呼机插件将字符串格式化为&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
]

如果您的数据库中有不确定数量的行,只需返回0 ... 仍然有用,但totalPages和{{1}变量将是不准确的。