我有一个带有AJAX分页的YUI DataTable(YUI 2.8.0r4)。表格中的每一行都链接到详细信息/编辑页面,我想从该详细信息页面链接回包含详细信息页面中记录的列表页面。所以我必须a)正确地偏移AJAX数据并且b)告诉YAHOO.widget.Paginator选择哪个页面。
根据我对YUI API docs的阅读,我必须传递initialPage
配置选项。我已经尝试了这个,但它没有尝试(来自AJAX的数据被正确地偏移,但是分页器认为我在第1页,所以点击“下一步”将我带到第6页到第2页。
我不做什么(或做错了)?
这是我的DataTable构建代码:
(function() {
var columns = [
{key: "retailer", label: "Retailer", sortable: false, width: 80},
{key: "publisher", label: "Publisher", sortable: false, width: 300},
{key: "description", label: "Description", sortable: false, width: 300}
];
var source = new YAHOO.util.DataSource("/sales_data.json?");
source.responseType = YAHOO.util.DataSource.TYPE_JSON;
source.responseSchema = {
resultsList: "records",
fields: [
{key: "url"},
{key: "retailer"},
{key: "publisher"},
{key: "description"}
],
metaFields: { totalRecords: "totalRecords" }
};
var LoadingDT = function(div, cols, src, opts) {
LoadingDT.superclass.constructor.call(
this, div, cols, src, opts);
// hide the message tbody
this._elMsgTbody.style.display = "none";
};
YAHOO.extend(LoadingDT, YAHOO.widget.DataTable, {
showTableMessage: function(msg) {
$('sales_table_overlay').clonePosition($('sales_table').down('table')).
show();
},
hideTableMessage: function() {
$('sales_table_overlay').hide();
}
});
var table = new LoadingDT("sales_table", columns, source, {
initialRequest: "startIndex=125&results=25",
dynamicData: true,
paginator: new YAHOO.widget.Paginator({rowsPerPage: 25, initialPage: 6})
});
table.handleDataReturnPayload = function(oRequest, oResponse, oPayload) {
oPayload.totalRecords = oResponse.meta.totalRecords;
return oPayload;
};
})();
答案 0 :(得分:1)
来自YUI Paginator Doc:
setPage void setPage(newPage, silent)将当前页面设置为 如果可能,提供页码。
参数: newPage新页码 沉默是否强行避免射击 changeRequest事件
返回:void
setPage方法可用于强制YUI paginator当前页面。 第二个参数“< silent>”可能对您有用,因为您不希望重新加载ajax数据。
答案 1 :(得分:0)
如果要将分页初始化为其他页面,还需要为总记录提供(临时)值。此论坛帖子提供了更多详细信息:
http://yuilibrary.com/forum/viewtopic.php?f=90&t=1913&start=0&hilit=initialPage