我正试图通过分页从ExtJS创建网格数据视图
事实上,当我创建一个简单的数据网格时没有问题
然后我想使用Ext Form创建一个"过滤器/搜索"函数。
这只适用于第一页。下面是我的Ext表单代码:
var winFilter = Ext.create('widget.window',{
title : 'Filter',
width : 400,
height : 200,
modal : true,
closeAction : 'hide',
items : frmFilter,
layout : 'fit',
bodyPadding: 5,
buttons:[
{
text : 'Filter',
handler: function(btn){
var win = btn.up('window');
var form = win.down('form');
tempProductID = form.getForm().findField('Product_ID').getSubmitValue();
tempDescription = form.getForm().findField('Description').getSubmitValue();
store.load({
params: {
start: 0,
limit: itemsPerPage,
productid: form.getForm().findField('Product_ID').getSubmitValue(),
description: form.getForm().findField('Description').getSubmitValue()
}
});
winFilter.hide();
}
},
{
text : 'Close',
handler: function(){
winFilter.hide();
}
}
]});
对于下一页,我的JSON返回所有数据,而不使用我以前使用的筛选值(产品ID和描述)
如果有任何建议,请
谢谢,伙计。
params
(用作load
方法的参数时)仅应用一次。如果你想将这些参数应用于每个请求,你必须修改proxy
extraParams属性:
Ext.apply(store.proxy.extraParams, {
productid: form.getForm().findField('Product_ID').getSubmitValue(),
description: form.getForm().findField('Description').getSubmitValue()
}, {});
store.load();
否则,您可以使用存储筛选器方法(store.remoteFilter应设置为true):
store.filter([
{property: "productid", value: form.getForm().findField('Product_ID').getSubmitValue()},
{property: "description", value: form.getForm().findField('Description').getSubmitValue()
]);
但请注意,当使用filter
方法时,请求url的过滤部分具有不同的形式。在这种情况下,过滤器部分看起来像?filter=[{'property':'productid','value':2}]&limit=10...
。而当使用params
方法时,url看起来有点像?productid=2&limit=10...
。所以当使用filter
方法时,后端应该解析请求的filter
属性。