使用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寻呼机后,我还有几个问题:
> sortList = [[2,0],[3,0]].在Ajax URL中,我是否自己转换为& col [2] = 0& col [3] = 0的实际格式?
> ajaxProcessing的文档说:
处理ajax以便返回以下信息:
// [total_rows(number),rows(数组数组),headers(array; optional)]
看起来total_rows是数据库中的行数,而不是浏览器内存中的行数或表中显示的行数.那是对的吗?下一个问题:我理解“行”数组数组的格式.但实际上哪些行应该在其中呢?文档说它是“所有行”,但它只是表中显示的当前行页面?到目前为止用户已经分页的是所有行吗?我假设它不是数据库中的所有行,因为这会完全破坏这一点.
最佳答案 要包含排序列和方向,只需在url模板中的示例中包含服务器端变量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和totalRows变量将是不准确的.