在ExtJS中当我们设置了分页的条件时,要跳转到第二页,发现设置分页的一些条件参数没有被传递到第二页,使得第二页显示了所有的数据。
为了解决这个问题,可以在创建JsonStore时设置一个beforeload监听事件,在每次load上数据前,先做好一些附加参数的准备工作,代码如下:
MisTab1.getProductTypeStore = function(){
var url = “product/ProductType-getProductTypeList.action”;
return new Ext.data.JsonStore({
root: ‘productType’,
totalProperty: ‘totalCount’,
url: url,
fields: [‘productId’,‘modify’,‘product_type_name’,‘create_sub’,‘parent_name’,‘create_sub’,‘remark’,‘parent’],
listeners:{
beforeload:function(store,records,options){
store.baseParams = {
query:‘query’,
name:‘a’
};
}
}
});
};
或者,在某个时刻操作了条件查询,需要在这个时候才设置条件,则可以获取到store对象,使用addListener添加beforeload事件,例如,下面就是在查询按钮中添加的addListener方法:
handler: function() {
var name = searchFormPanel.getForm().findField(“name”).getValue();
//gridPanel为之前创建好的一个Ext.grid.GridPane
gridPanel.getStore().addListener({
beforeload:function(store,records,options){
store.baseParams = {
query:‘query’,
name:name
};
}
});
gridPanel.getStore().reload({
params: {
start:0,
limit:10,
}
});
}