如何在多个字段上创建远程过滤器?分机 Js 5
How to create a remote filter on multiple fields? Ext Js 5
我如何在多个字段上创建过滤器,该过滤器在服务器上而不是在本地商店中过滤?
到目前为止,我只在本地获得。
onFilter: function(field, newValue, oldValue, options){
var grid = Ext.getCmp('grid');
grid.store.clearFilter();
if (newValue) {
var matcher = new RegExp(Ext.String.escapeRegex(newValue), "i");
grid.store.filter({
filterFn: function(record) {
return matcher.test(record.get('id')) ||
matcher.test(record.get('names'));
}
});
}
}
您不能在远程过滤上使用 filterFn 设置过滤器。远程过滤只能取 属性-value-operator 组合发送到后端,并且必须由后端进行评估和操作。
要过滤多个属性,您当然可以将多个过滤器发送到后端:
store.addFilters([{
id: 'idFilter',
property: 'id',
operator: 'eq',
value: newValue
},{
id: 'nameFilter',
property: 'names',
operator: 'like',
value: newValue
}]);
然后后端必须评估这些过滤器并将其应用于数据。这些值在没有客户端验证或使用的情况下发送到后端,因此您甚至可以将任意 属性 或运算符名称发送到后端:
store.addFilters([{
id: 'idOrNameFilter',
property: 'idOrName',
operator: 'somethingsomething',
value: newValue
}]);
您只需告诉您的后端从参数字符串中正确解析 属性 名称并采取相应行动。
我如何在多个字段上创建过滤器,该过滤器在服务器上而不是在本地商店中过滤?
到目前为止,我只在本地获得。
onFilter: function(field, newValue, oldValue, options){
var grid = Ext.getCmp('grid');
grid.store.clearFilter();
if (newValue) {
var matcher = new RegExp(Ext.String.escapeRegex(newValue), "i");
grid.store.filter({
filterFn: function(record) {
return matcher.test(record.get('id')) ||
matcher.test(record.get('names'));
}
});
}
}
您不能在远程过滤上使用 filterFn 设置过滤器。远程过滤只能取 属性-value-operator 组合发送到后端,并且必须由后端进行评估和操作。
要过滤多个属性,您当然可以将多个过滤器发送到后端:
store.addFilters([{
id: 'idFilter',
property: 'id',
operator: 'eq',
value: newValue
},{
id: 'nameFilter',
property: 'names',
operator: 'like',
value: newValue
}]);
然后后端必须评估这些过滤器并将其应用于数据。这些值在没有客户端验证或使用的情况下发送到后端,因此您甚至可以将任意 属性 或运算符名称发送到后端:
store.addFilters([{
id: 'idOrNameFilter',
property: 'idOrName',
operator: 'somethingsomething',
value: newValue
}]);
您只需告诉您的后端从参数字符串中正确解析 属性 名称并采取相应行动。