首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >YUI-2 Datatable :服务器端AJAX分页排序的动态列定义

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

Stack Overflow用户
提问于 2013-05-03 14:48:16
回答 1查看 852关注 0票数 0

我使用下面的代码创建一个包含动态数据(列)的YUI datatable。但我面临着服务器端分页的问题。到目前为止,它与客户端分页工作得很好,但我需要服务器端分页,这样我的页面加载时间就会减少。你能帮我解决这个问题吗?由于我在这方面已经苦苦挣扎了2个月,所以我期望使用AJAX进行days.Server端分页来呈现数据。

下面是我使用的代码

代码语言:javascript
复制
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);
    }
}

}

遵循本页面中发布的代码Click here

先谢谢你,Raja

EN

回答 1

Stack Overflow用户

发布于 2013-05-04 13:39:59

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16353202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档