Php YUI-2 Datatable:具有服务器端AJAX分页排序的动态列定义

Php YUI-2 Datatable:具有服务器端AJAX分页排序的动态列定义,php,yui,Php,Yui,我使用下面的代码创建一个带有动态数据(列)的YUI数据表。但是我在服务器端分页中面临一个问题。到目前为止,客户端分页工作正常,但我需要服务器端分页,以便缩短页面加载时间。你能帮我解决这个问题吗。由于过去两天我一直在这方面苦苦挣扎,所以我希望服务器端使用AJAX分页来呈现数据 这是我使用的代码 DataProvider.prototype = { url:null, data:null, ds:null, getData:function() {return this.data}, initial

我使用下面的代码创建一个带有动态数据(列)的YUI数据表。但是我在服务器端分页中面临一个问题。到目前为止,客户端分页工作正常,但我需要服务器端分页,以便缩短页面加载时间。你能帮我解决这个问题吗。由于过去两天我一直在这方面苦苦挣扎,所以我希望服务器端使用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);
    }
}
DataProvider.prototype={
url:null,
数据:空,
ds:null,
getData:function(){返回this.data},
初始化:函数(){
var str=generateRequest();
var newUrl=this.url+str;
YAHOO.util.Connect.asyncRequest('GET',newUrl,this);
},
成功:功能(响应){
var responseVal=YAHOO.lang.JSON.parse(response.responseText);
var columnList=responseVal.columnList;
var sortedBy=responseVal.sortedBy;
this.data=responseVal.results;
如果(this.data==''){
$('#dynamicdata').html('No Data Found!');
}否则{
this.ds=newYahoo.util.FunctionDataSource(function(){返回this.dataProvider.getData()});
此.ds.responseSchema={
结果列表:“结果”,
字段:columnList,
//访问服务器响应中的值
元字段:{
totalRecords:“totalRecords”,
startIndex:“startIndex”
}
}
this.ds.dataProvider=此;
//数据表配置
变量myConfigs={
paginator:new YAHOO.widget.paginator({rowsPerPage:20}),//启用分页
宽度:“80%”,高度:“自动”
};
//根据单元格颜色的值格式化单元格颜色
var myCustomFormatter=函数(elLiner、oRecord、oColumn、oData){
var columnKey=oColumn.getKey();
var frmCurrentPeroid=$('#from').val();
//风险值frmCurrentPeroid='2013-03-13';
var defaultLabels=['Product type','Total 1','Total 2','Change'];
if(isDate(columnKey)&&$.inArray(columnKey,defaultLabels)=-1){
if(columnKey
}

遵循此页面中发布的代码

提前感谢,,
拉贾

我已经有一段时间没有做YUI2了,所以我无法直接帮助你。也许这个例子能有所帮助:。我记得在2.6中有很大的变化,这个例子被标记为2.4,也许它们不再工作了