Как настроить YUI2 paginator для выбора страницы, отличной от первой страницы? - PullRequest
1 голос
/ 17 марта 2010

У меня есть таблица данных YUI (YUI 2.8.0r4) с нумерацией страниц AJAX. Каждая строка в таблице ссылается на страницу сведений / редактирования, и я хочу связать эту страницу сведений со страницей списка, содержащей запись со страницы сведений. Поэтому я должен: а) правильно сместить данные AJAX и б) сообщить 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;
  };
})();

Ответы [ 2 ]

1 голос
/ 17 марта 2010

От YUI Paginator Doc:

setPage void setPage (newPage, тихий) Установите текущую страницу в если возможно, укажите номер страницы.

Параметры: newPage номер новой страницы молчит ли насильно избегать стрельбы событие changeRequest

Возвращает: недействительно

метод setPage может использоваться для форсирования текущей страницы YUI-страниц. второй параметр "" может быть полезен для вас, поскольку вы не хотите, чтобы данные ajax перезагружались.

0 голосов
/ 17 марта 2010

Если вы хотите инициализировать Paginator на другой странице, вам также необходимо указать (временное) значение для totalRecords. Эта ветка форума предоставляет более подробную информацию:

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

...