因为我的数据形式是二维数据,所以我用simpleStore+ArrayReader可以很方便的显示出来,可是分页不好使,PagingToolbar 的页数总显示为NAN.
如果我把数据形式变成这样[code="java"]{
totalProperty :99,
items:[
[],[],[],[]
]
}[/code]
用jsonStore能读取出来吗?
[b]问题补充:[/b]
PagingToolbar是后台分页. ?
不太明白....
[b]问题补充:[/b]
atian25 (架构师) 我明白你的意思了,simpleStore就没办法设置totalProperty的值了吗?晕了.
[b]问题补充:[/b]
还有如果用jsonstore的话,那如果他的items是一个二维数组,直接用ArrayReader能解析出来吗?
要想grid能够分页,就不能使用Ext.data.SimpleStore。因为分页需要调用store的load()函数,而load函数与porxy有关。SimpleStore不但没有设置proxy,而且也没有重写load()函数,所以不能用SimpleStore。
再有,要明白,combo分页需要的数据是combo中的store提供的
var store = new Ext.data.Store({
proxy: new Ext.data.HttpProxy({url: ''})//store提交的地址
reader: new Ext.data.JsonReader({
totalProperty: 'totalCount',
//得到共有多少条条记录,是从后台返回的
root: 'result'
//得到记录集合,需是json格式的,也是从后台返回的
}, DepartmentRecord)
});
var grid = new Ext.grid.GridPanel({
title: '...',
autoHeight: true,
store: store,
cm: cm,
sm: sm,
viewConfig: {
forceFit: true ////表格会自动延展每列的长度,使内容填满整个表格
},
bbar: new Ext.PagingToolbar({
pageSize: 20, //每页显示20条记录
store: store,
displayInfo: true,
displayMsg: '显示第 {0} 条到 {1} 条记录,一共 {2} 条',
emptyMsg: "没有记录"
})
});
在后台你只需要得到start,limit
String start = request.getParameter("start");
String limit = request.getParameter("limit");
然后将start,limit转换成int,再放到sql语句里就行了,你无需处理start,limit,因为grid,已帮你处理了
还有,返回的数据格式一定要正确,这样就行了
good luck to you
SimpleStore是前台数据
PagingToolbar是后台分页.
如果需要前台分页,用
[quote]
[b]//来自Class Ext.PagingToolbar api[/b]
Paging with Local Data
Paging can also be accomplished with local data using extensions:
Ext.ux.data.PagingStore
Paging Memory Proxy (examples/ux/PagingMemoryProxy.js)
[/quote]
这2个扩展都可以在官方找到
[quote]SimpleStore是前台数据 [/quote]
这句刚才说的有歧义的.
store如果你设置了url,才会是获取后台数据.
至于page的页数不对,是因为你没有设置totalProperty的原因.
而SimpleStore相当于ArrayReader+Store.
而totalProperty是JsonReader的属性.
所以换为jsonstore是可以的.
老兄,你怎么没动静了,若是还不行,我建议你买一本《深入浅出Ext Js》在这本书里的第12章有一个完整的EXT应用,里面就用到了grid 分页,很详细。