Php YUI-2 Datatable:具有服务器端AJAX分页排序的动态列定义
我使用下面的代码创建一个带有动态数据(列)的YUI数据表。但是我在服务器端分页中面临一个问题。到目前为止,客户端分页工作正常,但我需要服务器端分页,以便缩短页面加载时间。你能帮我解决这个问题吗。由于过去两天我一直在这方面苦苦挣扎,所以我希望服务器端使用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
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,也许它们不再工作了