使用Ext Form中的值重新加载下一个JSON数据网格ExtJS



我正试图通过分页从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属性。

最新更新