jsonstore异步load与filter筛选结合使用时的问题

本文探讨了在异步加载Grid数据时进行有效筛选的方法。作者最初尝试直接使用filter筛选特定字段,但发现由于异步加载特性导致筛选失效。最终通过在load方法中设置callback属性实现了在数据加载完成后进行筛选。

在实现的时候遇到一个问题,在异步获取Grid数据的时候,想用filter来筛选数据,不用全部显示。那起初我是这样做的:

 

这样做的结果就是,无论如何都没法筛选StationName字段中有包河的row,后来尝试了filterBy也是不行,数据明明都正确的获得了,也能全显示,但是筛选未果。然后我在filter后面加了LeftGridStore.isFiltered()测试,也能报true,但就是无法筛选。

 

通过一番查找,终于知道了,这个jsonstore的load是异步的传输,当代码执行filter的时候,上面load的数据可能还没有到位,这时候你filter是没有用的。怎么解决呢?当然你可以通过事件来触发了,就是当load加载完的时候再调用filter就可以了。

 

那由上面的需求我们可以得到几种方法,可以给filter加延迟,不过这种方法不好,很低效。还有就是给store加一个on:load的事件响应,这个时候就会在load执行完后调用此方法。当然还有一种最简单的方法就是在上面代码的load中,附加callback属性,然后在function中实现filter,就可以完美的达到load结束以后调用filter筛选,因为callback正是load成功返回后的回调函数,满足我们的需要。

 

但是我们会发现,alert提示的结果是undefined,也就是没有被筛选,原因很简单,因为load异步操作,执行alert的时候,上面的load并没有完成。。perfect!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值