2010-03-17 61 views
1

我有一个带AJAX分页的YUI DataTable(YUI 2.8.0r4)。表格中的每一行都链接到详细信息/编辑页面,我希望从该详细信息页面链接到包含详细信息页面记录的列表页面。所以我必须a)正确地抵消AJAX数据,并b)告诉YAHOO.widget.Paginator要选择哪个页面。如何设置YUI2分页程序来选择第一页以外的页面?

根据我对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; 
    }; 
})(); 

回答

1

从YUI分页程序文件:

setPage无效setPage(NEWPAGE, 无声)集卷曲nt页面提供 如果可能,请提供页码。

参数: NEWPAGE新的页码 沉默是否强行避免烧成 changeRequest事件

返回:Void

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

相关问题