使用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寻呼机后,我还有几个问题:
ajaxProcessing的文档说:
处理ajax以便返回以下信息: // [total_rows(number),rows(数组数组),headers(数组;可选)]
看起来total_rows是数据库中的行数,而不是浏览器内存中的行数或表中显示的行数。那是对的吗?下一个问题:我理解“行”数组数组的格式。但实际上哪些行应该在其中呢?文档说它是“所有行”,但它只是表中显示的当前行页面?到目前为止用户已经分页的是所有行吗?我假设它不是数据库中的所有行,因为这会完全破坏这一点。
答案 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}变量将是不准确的。