1

我有一个带有 AJAX 分页的 YUI DataTable (YUI 2.8.0r4)。表中的每一行都链接到详细信息/编辑页面,我想从该详细信息页面链接回包含详细信息页面记录的列表页面。所以我必须 a) 正确偏移 AJAX 数据 b) 告诉 YAHOO.widget.Paginator 选择哪个页面。

根据我对YUI API 文档的阅读,我必须传入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;
  };
})();
4

2 回答 2

1

来自 YUI Paginator Doc:

setPage void setPage (newPage, quiet) 如果可能,将当前页面设置为提供的页码。

参数:newPage 新页码silent 是否强制避免触发changeRequest事件

返回:无效

setPage 方法可用于强制 YUI 分页器当前页面。第二个参数“<silent>”可能对您有用,因为您不希望重新加载 ajax 数据。

于 2010-03-17T17:25:51.123 回答
0

如果要将 Paginator 初始化到不同的页面,还需要为 totalRecords 提供一个(临时)值。该论坛主题提供了更多详细信息:

http://yuilibrary.com/forum/viewtopic.php?f=90&t=1913&start=0&hilit=initialPage

于 2010-03-17T19:30:52.510 回答