Extjs Store findRecord 查询API
2014-09-19 17:31
399 查看
下面列举一些实例来说明Store findRecord 这个方法简单使用。
比如你有一个userStore,这时想要去查找一个名字为Felix的user (前提当然是user model得有一个user的field),查询如下:
上面代码执行的结果返回的是一个Model实例。
再看一个简单实例,需求是得到Felix这个员工的ID号,查询如下:
好,这里想说明下findRecord这个方法的一些局限性:
只能找到第一条匹配的record
当前的store如果是被filter过的,则只能在被filter的数据集中去查找匹配的record,而不是最初的store
此外findRecord这个方法有几个参数,这里务必得说明:
fieldName (必选) : 需要作为查询条件的field name
value(必选): 查询的值,与fieldName匹配
startIndex(可选):从store的哪个位置开始查询, 默认值是0
anyMatch(可选): 默认是从第一个字符开始匹配,类似SQL中的‘a%’, 如果设置为True,则是全匹配,类似SQL中的‘%a%’,默认值是false
caseSensitive(可选): 设置为true则开启大小写敏感, 默认值是false
exactMacth(可选): 设置为True是精确查询, 默认是false (^ and $ characters added to the regex).
针对最后一个参数exactMacth值得注意,如果有个store数据为[['145', 'PO'], ['245', 'SO'], ['1', 'SI']], model为{fieldOid, fieldName}.
这时的需求是要找到fieldOid为1的record的filedName值(正确结果是SI才对)
我们觉得这样应该没问题,可以得到SI这个值,可是结果却是PO,why?
之前发现网上有文章 http://www.2cto.com/kf/201306/218487.html 说这是EXTJS的一个bug,我想应该不是。
因为value这个查询是通过正则表达式来做的,所以当1作为value传进去的时候,API用类似SQL ‘a%’表达式做查询,当然145被找到,所以返回的结果是PO。
所以为了精确的查询所要的记录,则需要下面的查询:
比如你有一个userStore,这时想要去查找一个名字为Felix的user (前提当然是user model得有一个user的field),查询如下:
var user = userStore.findRecord('firstName', 'Felix');
上面代码执行的结果返回的是一个Model实例。
再看一个简单实例,需求是得到Felix这个员工的ID号,查询如下:
getUserID : function (name) { var userStore = this.getUserStore(); var user = userStore.findRecord('name', 'Felix'); return user.get('id'); }
好,这里想说明下findRecord这个方法的一些局限性:
只能找到第一条匹配的record
当前的store如果是被filter过的,则只能在被filter的数据集中去查找匹配的record,而不是最初的store
此外findRecord这个方法有几个参数,这里务必得说明:
fieldName (必选) : 需要作为查询条件的field name
value(必选): 查询的值,与fieldName匹配
startIndex(可选):从store的哪个位置开始查询, 默认值是0
anyMatch(可选): 默认是从第一个字符开始匹配,类似SQL中的‘a%’, 如果设置为True,则是全匹配,类似SQL中的‘%a%’,默认值是false
caseSensitive(可选): 设置为true则开启大小写敏感, 默认值是false
exactMacth(可选): 设置为True是精确查询, 默认是false (^ and $ characters added to the regex).
针对最后一个参数exactMacth值得注意,如果有个store数据为[['145', 'PO'], ['245', 'SO'], ['1', 'SI']], model为{fieldOid, fieldName}.
这时的需求是要找到fieldOid为1的record的filedName值(正确结果是SI才对)
var field = fieldStore.findRecord('fieldOid', '1'); var fieldName = field.get('fieldName');
我们觉得这样应该没问题,可以得到SI这个值,可是结果却是PO,why?
之前发现网上有文章 http://www.2cto.com/kf/201306/218487.html 说这是EXTJS的一个bug,我想应该不是。
因为value这个查询是通过正则表达式来做的,所以当1作为value传进去的时候,API用类似SQL ‘a%’表达式做查询,当然145被找到,所以返回的结果是PO。
所以为了精确的查询所要的记录,则需要下面的查询:
var field = fieldStore.findRecord('fieldOid', '1', 0, false, false, true); var fieldName = field.get('fieldName');
相关文章推荐
- Extjs Store findRecord 查询API
- ArcGIS.Server.9.3和ArcGIS API for JavaScript实现查询定位中心的功能和FindTask功能应用(七)
- 深入浅出 Javascript API(五)--Query & Find 查询<转>
- ExtJS 4 grid 带参数 查询 分页 store beforeload 解决办法
- ArcGIS.Server.9.3和ArcGIS API for JavaScript实现查询定位中心的功能和FindTask功能应用(七)
- extjs中Record、Store、read、MixedCollection大概联系
- 深入浅出 Javascript API(五)--Query & Find 查询
- EXTjs4.0 的store的findRecord的BUG.
- EXTjs4.1 的store的findRecord的BUG.
- ExtJS中findRecord方法的bug及规避方法
- ExtJS中grid的JsonStore、Ext.PagingToolbar带条件查询问题
- extjs model的dirty属性能够查询store中某一个行是否改变过
- ExtJS--Extjs中创建或得到record和store的几种方法代码
- EXTjs4.0的store的findRecord的BUG演示代码
- 更新Extjs.data.Store的Record
- 深入浅出 Javascript API(五)--Query & Find 查询
- Extjs更换Store的ur连接 解决方案 搜索查询改变store的url
- ExtJS 4 grid 带参数 查询 分页 store beforeload 解决办法
- ExtJS 4 grid 带参数 查询 分页 store beforeload 解决办法
- Extjs循环Store里面的record