flex在使用itemrender时,再次刷新数据时itemrender错乱问题
2014-09-11 10:20
351 查看
显然flex为了保证执行效率,只是单纯的更新了数据部分。忽略了视图部分的更新。已经给出了一个可行的解决方案,链接如下http://bbs.9ria.com/viewthread.php?tid=66077
以上的方案是利用绑定,把checkbox的selected属性绑定到dataProvider中。这样就把他当做了一个数据,flex就会自动更新了。
不过由于贫道开发的时候,不适合用绑定,所以不得不另辟捷径,所幸最后找到了另外的解决办法。
通过updateComplete事件。我是UIComponent的一个事件,当flex组件的生命周期结束,也就是执行了commitProperties,measured,updateDisplayList后,我便会被派发。
根据list的渲染原理,假如数据源也就是dataProvider有10条数据,但是flex不会创建10个实例,他只会创建显示出来的那几条数据的实例。当我们拉动滚动条的时候,flex会根据当前的滚动位置来更新实例的数据内容。也就是说,当更新完毕后,他一定会派发updateComplete事件。我的思路就是,对itemrender的updateComplete事件进行侦听。
因为当玩家选中checkbox时,我把对应的itemrender中的数据的某一个唯一的属性记录下来,用来代表,当前lsit列表中的这个数据的checkbox已经被选中。加入我选了一个叫做heroID的属性,因为我是用这个来做将领列表的呈现的。heroID是唯一的。我选中一个将领,就把他的heroID放到外面的一个数组中。这样所有选中的将领都被记录下来。然后就在updateComplete事件做判断,当更新后的itemrender的heroID没有在外面数组中,就代表没有被选中,那么就把checkbox的选中状态设为flase,反之,设为true.这样就达到了之前一样的效果。
这个方案的核心思想就是利用updateComplete事件。
转载地址:http://bbs.9ria.com/thread-113497-1-1.html
以上的方案是利用绑定,把checkbox的selected属性绑定到dataProvider中。这样就把他当做了一个数据,flex就会自动更新了。
不过由于贫道开发的时候,不适合用绑定,所以不得不另辟捷径,所幸最后找到了另外的解决办法。
通过updateComplete事件。我是UIComponent的一个事件,当flex组件的生命周期结束,也就是执行了commitProperties,measured,updateDisplayList后,我便会被派发。
根据list的渲染原理,假如数据源也就是dataProvider有10条数据,但是flex不会创建10个实例,他只会创建显示出来的那几条数据的实例。当我们拉动滚动条的时候,flex会根据当前的滚动位置来更新实例的数据内容。也就是说,当更新完毕后,他一定会派发updateComplete事件。我的思路就是,对itemrender的updateComplete事件进行侦听。
因为当玩家选中checkbox时,我把对应的itemrender中的数据的某一个唯一的属性记录下来,用来代表,当前lsit列表中的这个数据的checkbox已经被选中。加入我选了一个叫做heroID的属性,因为我是用这个来做将领列表的呈现的。heroID是唯一的。我选中一个将领,就把他的heroID放到外面的一个数组中。这样所有选中的将领都被记录下来。然后就在updateComplete事件做判断,当更新后的itemrender的heroID没有在外面数组中,就代表没有被选中,那么就把checkbox的选中状态设为flase,反之,设为true.这样就达到了之前一样的效果。
这个方案的核心思想就是利用updateComplete事件。
转载地址:http://bbs.9ria.com/thread-113497-1-1.html
相关文章推荐
- flex 4.0 解决在MODULE中使用timer实时刷新数据,卸载MODULE后还在执行的问题
- flex 4.0 解决在MODULE中使用timer实时刷新数据,卸载MODULE后还在执行的问题
- Android中ListView数据使用sAdapter.notifyDataSetChanged();方法不刷新的问题
- EasyUI中tree,Datagrid,pagenation的使用EasyUI中Datagrid和pagenation进行关联时,再次点击pagenation时让表格数据显示的问题
- Android中ListView数据使用sAdapter.notifyDataSetChanged();方法不刷新的问题
- 使用bindingsource数据绑定时datagridview单元格无法及时刷新的问题
- 使用asx3m与xstream配合解决flex与java利用httpservice传递xml数据问题
- 在ascx中使用DropDownList绑定数据页面刷新时变空的问题
- Android使用TabHost实现在首页tab再次点击首页tab时,刷新首页数据或者recyclerView回到顶部的需求
- EasyUI中tree,Datagrid,pagenation的使用EasyUI中Datagrid和pagenation进行关联时,再次点击pagenation时让表格数据显示的问题
- Flex访问HTTPService时数据不自动刷新问题的解决方案
- flex中DataGrid里使用itemRenderer后数据无法绑定到数据源的问题
- 使用asx3m与xstream配合解决flex与java利用httpservice传递xml数据问题
- Fragment应用放置后台很久再次进入不会重新刷新数据展示、或者直接崩溃问题解决
- 使用sessionStorage解决vuex在页面刷新后数据被清除的问题
- listView使用simpleAdapter通过notifyDataSetChanged()方法刷新数据问题
- 使用Jquery EasyUi常见问题解决方案 刷新 easyui datagrid 数据
- 在ascx中使用DropDownList绑定数据页面刷新时变空的问题
- Flex中自定义组件ItemRenderer,数据绑定dataprovider,刷新问题。
- 关于layui2.2.x版本使用table表格,刷新后table数据消失的问题