关于ItemRenderer刷新改变值的问题

从网上找到的,整理如下:

 

主要原因是DataGrid  List Tree 等这些组件他们都使用了缓存的机制! 也就是说当你在页面中的DataGrid可以显示10行记录,,而你实际的数据源中存在20行记录。但是DataGrid也只是绘制了当前你所看到的10行记录,而不是20行记录,,那么绘制了10行记录,也就是说创建了当前的10个ItemRenderer,当你在滚动滚动条的时候你又看到了剩下的10行记录,而这10行记录所需要的ItemRenderer是不需要在重新绘制的(如果你使用的是默认的,怎样去掉这个缓存我也不清楚),它会从缓存中去提取! 所以如果你的数据源没有动态绑定,那么当你在进行滚动的时候就会出现这样的情况!
   例如:当你的ItemRenderer中存在一个CheckBox,它的是否选中是根据数据原中的K值来决定,如果K为0则选中1为不选中,当你选中了这个CheckBox而没有改变K的值,当你在滚动回来的时候它会根据你的数据重绘这行,那么这个时候数据还是1则不会选中!

对于重写 ItemRenderer是最好的方式,,如果重写的话需要重写其 measure方法  和commitProperties 和updateDisplayList方法!

From:http://topic.csdn.net/u/20090818/18/0fac2e39-6735-41cc-b3f1-378143d32d0e.html

 

解决方法:

在自己定义的类上,绑定这个你要刷新的类型,然后放到itemRenderer中

如:

 

然后在view中使用itemRenderer的地方用:

 

注意visible=“{data.visible}”的地方,这里需要定义itemRenderer的操作方式等

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值