一个JSON Store,默认查询全部都没问题
一开始是
store.load({params:{start:0,limit:10}});
加了个条件,
store.load({params:{start:0,limit:10,name:'xxxx'}});
可以返回查询结果
但是我点下页下页、显示的结果不是加了name条件的,而是全面全部的,等于tbar根本没保存住我后面输入的options
请问怎么解决
[b]问题补充:[/b]
dayang2001911 (初级程序员) 2008-11-08
我用了你的代码,还是不可以,其实我之前页写过,但是也不可以
我看了ext的源代码
doLoad=function(start){
var o = {}, pn = this.paramNames;
o[pn.start] = start;
o[pn.limit] = this.pageSize;
if(this.fireEvent('beforechange', this, o) !== false){
this.store.load({params:o});
}
};
tbar执行的doLoad方法,我发现这里他永远只读取start limit2个参数
o是局部变量,我在beforechange事件里面修改了,也无法同步o
最后我只好修改prototype
Ext.PagingToolbar.prototype.doLoad=function(start){
var o = {}, pn = this.paramNames;
o[pn.start] = start;
o[pn.limit] = this.pageSize;
Ext.apply(o,{name:Ext.getCmp('name').getValue()}); // 强制
if(this.fireEvent('beforechange', this, o) !== false){
this.store.load({params:o});
}
};
这样就无问题了
[b]问题补充:[/b]
我用的EXTJS 2.2的
不知道你是什么版本,我怀疑是版本问题 code错误
[b]问题补充:[/b]
store的load方法说明了会记住最后的参数 我打印看了,lastOptions的确是正确的
但是看了tbar的doLoad,根本不是去引用store.lastOptions,而是只用start limit
希望是我错误
[b]问题补充:[/b]
晚上再想想,我觉得beforeload应该是可以的
仔细看了代码,发现自己apply
错误了 Ext.apply(thiz.baseParams, {name:Ext.getCmp('name').getValue()}); 我写成了
Ext.apply(thiz.baseParams, Ext.getCmp('name').getValue());