0

我正在使用下面的代码创建一个带有动态数据(列)的 YUI 数据表。但是我面临服务器端分页的问题。到目前为止,它在客户端分页上运行良好,但我需要服务器端分页,这样我的页面加载时间就会减少。你能帮我解决这个问题吗?由于过去 2 天我一直在这方面苦苦挣扎。使用 AJAX 进行服务器端分页来呈现数据是我的期望。

这是我使用的代码

DataProvider.prototype = {
url:null,
data:null,
ds:null,
getData:function() {return this.data},
initialize:function(){
    var str = generateRequest();
    var newUrl = this.url+str;
    YAHOO.util.Connect.asyncRequest('GET', newUrl, this);
},
success:function(response){
    var responseVal = YAHOO.lang.JSON.parse(response.responseText);
    var columnList = responseVal.columnList;
    var sortedBy = responseVal.sortedBy;
    this.data = responseVal.results;

    if(this.data == '') {
        $('#dynamicdata').html('<font style="color:red;"> No Data Found!</font>');
    } else {
        this.ds = new YAHOO.util.FunctionDataSource(function(){return this.dataProvider.getData()});
        this.ds.responseSchema = {
            resultsList:"results",
            fields:columnList,
            // Access to values in the server response
            metaFields: {
                totalRecords: "totalRecords", 
                startIndex: "startIndex"
            }
        }
        this.ds.dataProvider = this;

        // DataTable configuration
        var myConfigs = {
            paginator: new YAHOO.widget.Paginator({ rowsPerPage:20 }), // Enables pagination 
            width:"80%", height:"auto"
        };

        // FORMATTING CELL COLOUR BASED ON THEIR VALUES
        var myCustomFormatter = function(elLiner, oRecord, oColumn, oData) {    
            var columnKey = oColumn.getKey();
            var frmCurrentPeroid = $('#from').val();
            //var frmCurrentPeroid = '2013-03-13';
            var defaultLabels = ['Product type','Total 1','Total 2','Change'];

            if (isDate(columnKey) && $.inArray(columnKey, defaultLabels) === -1) {

                if(columnKey < frmCurrentPeroid) {
                    YAHOO.util.Dom.addClass(elLiner.parentNode,'orange');
                    elLiner.innerHTML = oData;
                    //alert('blue');
                } else {
                    YAHOO.util.Dom.addClass(elLiner.parentNode,'blue');
                    elLiner.innerHTML = oData;
                }                   
            } else {
                if(columnKey == 'Total 1') {
                    YAHOO.util.Dom.addClass(elLiner.parentNode,'orange');
                    elLiner.innerHTML = oData;
                    //alert('blue');
                }       
                else if(columnKey == 'Total 2') {
                    YAHOO.util.Dom.addClass(elLiner.parentNode,'blue');
                    elLiner.innerHTML = oData;
                    //alert('blue');
                }
                else if(columnKey == 'Change') {
                    split_data = oData.toString().split('_');   
                    var fieldData = null;
                    var fieldFormatter = null;

                    fieldData = split_data[0];
                    fieldFormatter = split_data[1];

                    if(fieldFormatter == 'green') {                     
                        YAHOO.util.Dom.addClass(elLiner.parentNode,'green');
                        elLiner.innerHTML = fieldData;
                    }
                    if(fieldFormatter == 'red') {
                        YAHOO.util.Dom.addClass(elLiner.parentNode,'red');
                        elLiner.innerHTML = fieldData;
                    }
                }
                else if(columnKey == 'Product Name') {
                    var filterStr   = oData.substring(0,30);
                    elLiner.innerHTML = '<a href="..product-detail.php?product_id='+oRecord._oData.product_id+'&height=400&width=850&modal=true" title="'+oData+'" class="thickbox" target="_self">'+filterStr+'</a>';
                    //alert('blue');
                }                               
                else {
                    elLiner.innerHTML = oData;
                }       
            }
        };

        // Add the custom formatter to the shortcuts
        YAHOO.widget.DataTable.Formatter.myCustom = myCustomFormatter;

        //YAHOO.widget.DataTable.formatLink = formatLink;

        /* make call to initialize your table using the data set */
        var myDataTable = new YAHOO.widget.DataTable("dynamicdata", columnList, this.ds, myConfigs);
    }
}

}

按照此页面中发布的代码 单击此处

提前致谢, 拉贾

4

1 回答 1

0

我已经有一段时间没有做 YUI2 了,所以我不再能够直接帮助你。也许这个例子可以帮助: http: //www.satyam.com.ar/yui/#ServerDriven。我记得 2.6 有很大的变化,这个例子被标记为 2.4,也许它们不再起作用。

于 2013-05-04T05:39:58.507 回答