现在的位置: 首页 > 综合 > 正文

关于ItemRenderer刷新改变值的问题

2013年09月05日 ⁄ 综合 ⁄ 共 1137字 ⁄ 字号 评论关闭

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

 

主要原因是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的操作方式等

 

 

抱歉!评论已关闭.