天天看点

stroe.fiter

搜索、定位和统计

Store 提供了以下搜索和定位记录的方法:

第一部分 Ext Core ● 12

each:枚举所有记录,当枚举函数返回false 时,终止枚举操作。其使用方法请看下面

代码:

store.each(function(rec){

//处理过程

});

filter:根据指定属性过滤记录。其使用方法请看下面代码:

//过滤掉不是name 不包含“张”的记录

store.filter('name','张',true,false);

代码中的过滤规则可使用字符串,也可以使用正则表达式。第3 个参数如果为false,则表示只

匹配开始位置,为true 则表示匹配任何位置;第4 个参数如果为false,则表示不区分大小写,为

true 则表示要匹配大小写。

filterBy:通过一个函数过滤记录。该函数会枚举每一个记录,然后根据函数返回值判断记

录是否被过滤。如果函数返回true,则包含该记录,如果返回false,则过滤掉该记录。其使

用方法请看下面代码:

//返回id 为单数的记录

store.filterBy(function(rec,id){

if(id %2==0){

return true;

}else{

retrun fase;

}

});

isFiltered:判断Store 当前是否处于过滤状态。如果是,返回true;否则,返回false。其使

用方法请看下面代码:

if(store.isFiltered()){

store.clearFilter();

}

clearFilter:将Store 恢复到没有进行过滤的状态,其使用方法可参考isFiltered 方法中的代码。

find:根据指定属性查找匹配的记录,并返回匹配的第一个记录的索引值。如果没有找到匹

配的记录,则返回-1。其使用方法请看下面代码:

var index=store.filter('name','张',2,true,false);

与 filter 方法一样,搜索值可以是字符串,也可以是正则表达式。第3 个参数为搜索开始位

置,默认值为0。第4 个参数如果为false,则表示只匹配开始位置,为true 则表示匹配任何位置。

第5 个参数如果为false,表示不区分大小写,如果为true 则表示要区分大小写。

findBy:通过一个函数查找匹配的记录并返回匹配的第一个记录的索引值。该函数会从指定

的开始位置枚举每一个记录,然后根据返回值判断记录是否匹配。如果函数返回true,则表

示已找不到匹配记录,枚举操作结束并返回匹配记录的索引值。如果没有找到匹配的记

录,方法返回值为-1。其使用方法请看下面代码:

store.findBy(function(rec,id){

if(id %2==0){

return true;

13 《Ext JS高级程序设计》

}else{

retrun fase;

}

},2);

在代码中,第2 个参数“2”表示查找的开始位置。

findExact:与find 方法作用一样,只是没有匹配位置和区分大小写参数。其使用方法可参

数find 方法。

getAt:根据索引值获取一个记录,其使用方法请看下面代码。

//获得第2 条记录

var rec=store.getAt(2);

getById:根据记录id 返回记录,其使用方法请看下面代码。

//获得id 为2 的记录

var rec=store.getById(2);

getCount:返回Store 的记录总数。如果没有采用分页方式,则其返回结果与getTotalCount

方法一样。如果采用了分页方式,则getCount 返回的是Store 的记录总数,getTotalCount 返

回的才是数据库的记录总数,不过前提是要在Reader 定义中包含有记录总数的属性。其使

用方法请看下面代码:

var count=store.getCount();

getTotalCount:返回数据库的记录总数,不过前提是Reader 必须包含记录总数的属性。其

使用方法请参考getCount 方法。

getModifiedRecords:获取执行commit 后被修改的记录。要注意的是,返回的记录不包括被

删除的记录。其使用方法请看下面代码:

var recs=store.getMpdifiedRecords ();

getRange:返回指定范围内的记录。其使用方法请看下面代码:

//返回所以记录

var recs=store.getRange();

//返回第2 条到第10 条之间的记录。

var recs=store.getRange(2,10);

indexOf:返回记录的索引值。如果记录在Store 中不存在,则返回-1。其使用方法请看下面

代码:

var index=store.indexOf(rec);

indexOfId:根据记录id 返回记录的索引值。如果记录id 在Store 中不存在,则返回-1。

其使用方法请看下面代码。

var index=store.indexOfId(2); //返回id 为2 的记录索引值

query:获取符合指定条件的记录。其返回值为Ext.MixedCollectionxt 对象。其使用方法可

参考filter 方法。

queryBy:通过一个函数获取指定条件的记录。该函数会枚举每一个记录,然后根据函数返

回值判断记录是否被选取。如果函数返回true,则包含该记录,如果返回false,则不选取该

记录。其使用方法可参考filterBy 方法。

继续阅读