2013-05-03 65 views
0

我正在使用下面的代碼來創建帶有動態數據(列)的YUI數據表。但是在服務器端分頁時遇到問題。截至目前,它與客戶端分頁工作正常,但我需要服務器端分頁,以便我的頁面加載時間將減少。你能幫我解決這個問題嗎?因爲我在這個領域掙扎了兩天以上。服務器端分頁與AJAX來呈現數據是我的期望。YUI-2 Datatable:使用服務器端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); 
    } 
} 

}

隨後在此頁面張貼在提前 Click here

感謝代碼, 拉賈

回答

0

我沒有代碼在YUI2做了相當長的一段時間,所以我不再能夠直接幫助你。也許這個例子可以幫助:http://www.satyam.com.ar/yui/#ServerDriven。我記得2.6版有很大的變化,這個例子標記爲2.4,或許它們不再有效。

相關問題