各位老大,我在做gridPanel分页时用到了PagingToolbar,但基本上所有的资料都只说了用 ds.load({params:{start:0,limit:10}}); 建立一个HTTP 参数到远程数据源. 感觉这样使用数据页面(页面提供数据)的方法很原始,我必须在store中 使用 Ext.data.HttpProxy({url:'datapage.aspx'}), 这种方式。
但我目前后台AJAX类全写好的,我用方法 var data=getdata(20,25);就可得到服务器从第20条记录开始的25条数据。所以我把store使用内存模式 Ext.data.MemoryProxy(data),就行了。所有测试都OK,但PagingToolbar似乎不支持事件和方法的邦定,帮忙看下面问题DEMO
=============================================================================================
Ext.onReady(function(){
//alert(TMKSOFT.getData(20,20).value);    //成功调试Json数据源,服务器Ajax方法,从服务器获取JSON数据 数据源绝对没问题function getdata(st,pg)
{
   data=eval('('+TMKSOFT.getData(st,pg).value+')');
   return data;
}var data=getdata(20,20);   //初始化调试了下,能成功显示数据var store = new Ext.data.Store({
   proxy: new Ext.data.MemoryProxy(data),
   reader: new Ext.data.JsonReader({
   totalProperty: 'results',
   root: 'rows'
   }, [
   {name: 'id', mapping: 'id'},
   {name: 'name', mapping: 'name'},
   {name: 'organization',mapping: 'organization'},
   {name: 'homepage',mapping: 'homepage'},
   ])
});//store.addListener('load',getdata); 想用Load侦听,但也失败var colM=new Ext.grid.ColumnModel([{header:'项目编号',dataIndex:'id',sortable:true},
                                  {header:'项目名称',dataIndex:'name',sortable:true},
                                  {header:'开发团队',dataIndex:'organization',sortable:true},
                                  {header:'网站地址',dataIndex:'homepage',renderer:showUrl}]);var grid = new Ext.grid.GridPanel({
           renderTo:'hello',
           title:"中国Java开源产品及团队",
           bodyStyle:'width:100%',
           autoWidth:true,
           height:500,
           //width:'100%',
           cm:colM,
           store:store,
           autoExpandColumn:2,
           bbar: new Ext.PagingToolbar({
           id:'pagingtoolbar',
           pageSize: 20,
           store: store,
           displayInfo: true,
           displayMsg: '显示第 {0} 条到 {1} 条记录,一共 {2} 条',
           emptyMsg: "没有记录"
           })
                  });  //var p1=document.getElementById("ext-gen30").value; //这样可得到需要从第几条记录开始
  //var p2=Ext.getCmp('pagingtoolbar').pageSize;            //这样可得到多少条纪录
  alert(p1+"   +   "+p2)
  store.load({callback:getdata});         //每点一下PagingToolbar触发什么事件,重调我getdata方法获取新数据,我该怎么写?
}); 

解决方案 »

  1.   

    楼主,extjs的分页没有缓存机制,或者说有缓存机制也是把所有的数据取出放到内存中才支持分页的效果,但是这也是它的缺陷,你只是取出部分数据的话,那么extjs的分页当然就不支持你的读取数据方法了
      

  2.   

    分页的时候穿到后面2个参数,一个是start,另一个是limit
    start是从第几条记录开始,limit是每页显示多少即你pageSize: 20
    在你的action或者baseAction里面写个方法算一下就行了