2010-03-17 4 views
1

J'ai une table de données YUI (YUI 2.8.0r4) avec pagination AJAX. Chaque ligne de la table est liée à une page de détails/d'édition et je souhaite revenir à la page de liste contenant l'enregistrement de la page de détails. Donc je dois a) compenser les données AJAX correctement et b) dire à YAHOO.widget.Paginator quelle page sélectionner.Comment paramétrer YUI2 paginator pour sélectionner une page autre que la première page?

D'après ma lecture du YUI API docs, je dois passer dans l'option de configuration initialPage. J'ai essayé ceci, mais ça ne prend pas (les données d'AJAX sont correctement décalées, mais le paginateur pense que je suis à la page 1, alors cliquer sur "suivant" me prend de la page 6 à la page 2.

Qu'est-ce que je fais pas (ou faire le mal)

Voici mon DataTable code du bâtiment:

(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; 
    }; 
})(); 

Répondre

1

de YUI Paginator Doc:

setPage setPage void (newPage, silencieux) Set le curre nt page au fourni le numéro de page si possible.

Paramètres: NewPage le nouveau numéro de page silencieuse que pour éviter la force de tir l'événement ChangeRequest

Renvoie: void

la méthode setPage peut être utilisé pour forcer YUI paginator page en cours. le deuxième paramètre "<silent>" peut vous être utile puisque vous ne voulez pas que les données ajax soient rechargées.

Questions connexes