php grid分页,Tutorial: Grid组件的简易分页

Grid的分页必须依靠服务端(Server Side)来划分好每一页的数据才可以完成。

本例中的服务端事PHP,数据库是MySQL,用来导出一些随机的数据。下列脚本的作用是,获取我们想要的数据,同时这些数据事已分好页的数据。分页的参数是由Page Toolbar传入的变量limit和start所决定的。

$link = mysql_pconnect("test-db.vinylfox.com", "test", "testuser")

or die("Could not connect");

mysql_select_db("test") or die("Could not select database");

$sql_count = "SELECT id, name, title, hire_date, active FROM random_employee_data";

$sql = $sql_count . " LIMIT ".$_GET['start'].", ".$_GET['limit'];

$rs_count = mysql_query($sql_count);

$rows = mysql_num_rows($rs_count);

$rs = mysql_query($sql);

while($obj = mysql_fetch_object($rs))

{

$arr[] = $obj;

}

Echo $_GET['callback'].'({"total":"'.$rows.'","results":'.json_encode($arr).'})';

由于每个后台开发的环境都不尽相同,所以这里的服务端代码就不细究了。

怎么做一个分页的Grid

本例采用的是ScriptTagProxy,原因是 范例代码 和 服务端代码 不是在同一个服务器上(译注:即“跨域”),而大多数的情况是,在同一个服务器上得到数据,直接用HttpProxy就可以了。

使用DataStore与平时唯一不同的地方,便是需要设置totalProerty属性。本例中,我们从服务端的脚本计算出“total”这个值,告诉DataStore总共有多少个记录,这里指的是所有的记录数。

var ds = new Ext.data.Store({

proxy: new Ext.data.ScriptTagProxy({

url: 'http://www.vinylfox.com/yui-ext/examples/grid-paging/grid-paging-data.php'

}),

reader: new Ext.data.JsonReader({

root: 'results',

totalProperty: 'total',

id: 'id'

}, [

{name: 'employee_name', mapping: 'name'},

{name: 'job_title', mapping: 'title'},

{name: 'hire_date', mapping: 'hire_date', type: 'date', dateFormat: 'm-d-Y'},

{name: 'is_active', mapping: 'active'}

])

});

分页栏Toolbar

这里加入一个分页栏到Grid的面板中,--差不多完成喽。

var gridFoot = grid.getView().getFooterPanel(true);

var paging = new Ext.PagingToolbar(gridFoot, ds, {

pageSize: 25,

displayInfo: true,

displayMsg: 'Displaying results {0} - {1} of {2}',

emptyMsg: "No results to display"

});

最后传入start和limit参数以初始化数据。

ds.load({params:{start:0, limit:25}});

花时间较多的地方是,在后台如何生成数据,以配合Grid的运作,一旦这些工作OK后,分页Grid再不是一件难事了。

译者姓名:Frank

译者博客:http://www.ajaxjs.com/blog/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值