如何在多个字段上创建远程过滤器? Ext Js 5

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在多个字段上创建远程过滤器? 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设置过滤器。远程过滤只能采用发送到后端的属性 - 值 - 运算符组合,并且必须由后端进行评估和操作。

要过滤多个属性,您当然可以向后端发送多个过滤器:

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
}]);

您只需要告诉后端从参数字符串中正确解析属性名称并采取相应措施。

以上是关于如何在多个字段上创建远程过滤器? Ext Js 5的主要内容,如果未能解决你的问题,请参考以下文章

在 Ext JS 中搜索模式

Ext JS 4:过滤 TreeStore

如何正确索引在具有多个连接的查询中使用的表

Ext JS - 如何理解语法

如何在 Ext JS Grid 3.2 的列标题中添加过滤器选择器

如何在 EXT JS 中获取当前操作表单