Extjs中store的filter和filterBy的用法
时间: 2023-08-10 22:06:11 浏览: 208
在 ExtJS 中,store 是用于存储数据的容器,通常用于展示数据的组件,例如 grid、combobox 等。而 store 的 filter 和 filterBy 方法则用于过滤 store 中的数据。
filter 方法接收一个参数,即一个函数,该函数用于判断 store 中的每一条记录是否符合过滤条件。符合条件的记录将会被保留,不符合条件的记录将会被删除。例如:
```javascript
store.filter(function(record) {
return record.get('name') === 'John';
});
```
上述代码将筛选出所有名字为 John 的记录。
filterBy 方法则接收两个参数:属性名和属性值,用于筛选指定属性值的记录。例如:
```javascript
store.filterBy(function(record) {
return record.get('age') > 18;
});
```
上述代码将筛选出所有年龄大于 18 岁的记录。
需要注意的是,filter 和 filterBy 方法均会改变 store 中的数据,因此在使用前需要备份原始数据。另外,当需要取消过滤时,可以通过 store.clearFilter() 方法来清除过滤条件。
相关问题
ExtJS中store.findExact
ExtJS中的`store.findExact()`方法是用于在指定的store中查找匹配给定属性值的记录的索引。它接受两个参数:属性名和属性值。该方法返回匹配的第一条记录的索引,如果没有找到任何匹配项,则返回-1。与`store.find()`方法不同,`findExact()`方法使用严格相等的匹配方式,即只有当属性值与给定值完全相等时才算匹配。
extjs filter
ExtJS 提供了用于过滤数据的强大功能。你可以使用 Ext.util.Filter 类来创建和应用过滤器。过滤器可以应用于 ExtJS 的各种数据组件,如 Grid、Tree 等。
要使用过滤器,首先你需要创建一个 Ext.util.Filter 的实例,指定过滤的字段、操作符和值。例如,如果你要过滤一个 Grid 的数据,你可以这样创建一个过滤器:
```javascript
var filter = Ext.create('Ext.util.Filter', {
property: 'name', // 过滤的字段名
operator: 'like', // 操作符(如:'=', 'like', '>', '<' 等)
value: 'John' // 过滤的值
});
```
然后,你可以将这个过滤器应用到你的数据组件上,比如一个 Grid:
```javascript
var grid = Ext.create('Ext.grid.Panel', {
// 配置项...
store: myStore, // 绑定的数据源
columns: myColumns, // 列定义
viewConfig: {
plugins: {
ptype: 'gridviewdragdrop',
dragGroup: 'firstGridDDGroup',
dropGroup: 'secondGridDDGroup'
},
listeners: {
beforeitemcontextmenu: function(view, record, item, index, e) {
e.stopEvent(menu.showAt(e.getXY()));
return false;
},
itemdblclick: function(gridView, record) {
var rec = record.data;
var id = rec.id;
var name = rec.name;
var age = rec.age;
Ext.Msg.alert('双击', '您双击了 ' + name + ' 的记录');
}
}
},
features: [{
ftype: 'filters' // 使用 filters 特性
}]
});
```
通过将 `features` 配置项设置为 `[{"ftype":"filters"}]`,你就可以启用过滤功能。然后,你可以使用 Grid 的 `getPlugin()` 方法获取到 filters 插件,并调用 `addFilters()` 方法将过滤器添加到 filters 中:
```javascript
var filters = grid.getPlugin('gridfilters');
filters.addFilters(filter);
```
这样,过滤器就会应用到 Grid 的数据上,显示符合过滤条件的数据行。
这只是 ExtJS 过滤功能的基本用法,你还可以根据具体需求进行更复杂的过滤操作。详细的使用方法可以参考 ExtJS 的官方文档。