2011-02-09 38 views
1

我有一个JsonStore:为什么我的ExtJS GridPanel不关注极限参数?

var store = new Ext.data.JsonStore({ 
     root: 'Data.items', 
     remoteSort: false, 
     fields: ['ClockTime', 'EmpId'], 
     proxy: new Ext.data.HttpProxy({ 
      url: AppRootPath + 'Something/GetSomething', 
      method: 'POST' 
     })//proxy 
});//new Ext.data.JsonStore 

我然后在这个商店使用以下呼叫负载:

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

我有一个网格显示在这样的数据:

var grid = new Ext.grid.GridPanel({ 
    store: store, 
    title:'Employees', 
    stateful: true, 
    id: 'grid', 
    stripeRows: true, 
    stateId: 'excp_list', 
    bbar: new Ext.PagingToolbar({ 
     store: store,  
     displayInfo: true, 
     prependButtons: true, 
     emptyMsg: "No records to display", 
     pageSize: 25 
    }), 
    viewConfig: { 
     forceFit: true 
    }, 
    columns: [ 
     {header: "Emp Id", width: 40, dataIndex: 'EmpId', sortable: true}, 
     {header: "Clock Time", width: 40, dataIndex: 'ClockTime', sortable: true} 
    ] 
}); 

我预计这将只显示每页25个记录/行。但它只显示一页,并在此页面上共有160条记录。 我在这里错过了一些明显的东西吗?

回答

4

您缺少Store/JsonReader的totalProperty。这应该是记录的总数,分页工具栏需要知道这个以计算页数等。另外,您的服务器需要发回正确的页面和总计结果计数。看起来你的服务器正在发回所有的记录,并忽略了开始和限制参数。

+2

+1但JsonReader的totalProperty默认为'total'(如果未指定)。所以它是*不是强制性的*在你的JsonReader的配置中指定这个。 (我同意值得查看服务器响应是否包含此属性) – 2011-02-09 16:35:11

3

shane87,

总之,“显而易见”的东西,你可以在这里缺少的是的事实,这是服务器的责任,检测/读取开始和限制并传回的只有“限制”号记录

否则,您的客户端代码看起来不错,除了您可能想要检查的totalProperty,如下面Robby的answer所述。

1

load()配置中声明的参数是作为普通的HTTP参数发送的。在C#中,您必须发出Request [“start”]和Request [“limit”]来获得这些参数,并将它们发送到您的数据层。在大多数情况下,您的数据库应该能够对返回的结果集/数据集进行分页,并只将该数据发送回ExtJS。