1

AJAXページ付けを使用したYUIDataTable(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、silent)可能であれば、現在のページを指定されたページ番号に設定します。

パラメータ:newPage新しいページ番号はchangeRequestイベントの発生を強制的に回避するかどうかをサイレントにします

戻り値:void

setPageメソッドを使用して、YUIページネーターの現在のページを強制することができます。2番目のパラメーター「<silent>」は、ajaxデータを再ロードしたくないため便利な場合があります。

于 2010-03-17T17:25:51.123 に答える
0

Paginator を別のページに初期化する場合は、totalRecords の (一時的な) 値も指定する必要があります。このフォーラム スレッドは、詳細を提供します。

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

于 2010-03-17T19:30:52.510 に答える