Dancie2002
Dancie2002
2008-11-07 23:58

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 dayang2001911 13年前

    我对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());
    这样,点击下一页的时候没有出现丢失查询参数的问题。

    点赞 评论 复制链接分享
  • dayang2001911 dayang2001911 13年前

    我不是用的2.2,用的2.0或2.1的

    点赞 评论 复制链接分享

相关推荐