Dancie2002 2008-11-07 15:58
浏览 451
已采纳

Ext.PagingToolbar带条件查询问题

一个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());

展开全部

  • 写回答

2条回答 默认 最新

  • dayang2001911 2008-11-07 16:39
    关注

    我对ext也不是很熟,看了你的问题后,我比对了一下我们项目中类似的应用,我觉着可能还是因为你在点击分页中还是没有把name传入到store中的url处理查询的方法中。

    我把我们代码实现过程大致写一下:
    var resultGrid = new xg.GridPanel({
    id:'resultlist-grid',
    store: store,
    ...
    bbar: new Ext.PagingToolbar({
    store: store,
    pageSize: Ext.page.pageSize,
    displayInfo: true
    })
    });

    然后定义了个查询的formpanel frm
    增加一个beforeload事件,在'beforeload'发生的时候把form中的参数传入到store的url中
    store.on('beforeload', function(thiz,options) {
    Ext.apply(thiz.baseParams, frm.getValues());
    });

    store.load(getParam());
    这样,点击下一页的时候没有出现丢失查询参数的问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部