(第一次修订,于2009年12月9日)
想要做的事: 使用使用List的ItemRenderer,为List中的每一项都加一个序号。
出现的问题: 当为List添加多个ItemRenderer的时候,会出现重复的序号。
做法: ItemRenderer实现IDropInListItemRenderer,重写listData属性,并绑定DataChange事件。让ItemRenderer中的Text控件text绑定listData.selectedIndex+1。
本来想这样就能够实现1、2、3、4、5、……的序号的,但是没有想到添加前4个序号的时候,一切都是正常。但是,当添加第5个序号的时候,滑动一下滚动条就会发现本来应该是5的序号变成了4,在往上滚动滚动条,2也变成了1。来回滚动滚动条,序号更不得了,变得全乱了。
网上查了许多中方法,也许是本人太笨,并没有找到好的解决方案。看了Oreilly的Cookbook也没有看明白,但是我确定第七章最后一节一定有我想要的答案,于是我拼命的理解,拼命的尝试。
COOKBOOK中 写道
It is important to remember that the item renderer is reused by the List. When trying to set states in an item renderer when it is selected, the data of the item renderer must be compared with the selectedItem in the List or DataGridColumn rather than the selectedIndex, because the selectedIndex does not indicate which renderer is selected. In fact, the selected renderer could very well be scrolled away from in the List.
中文版翻译节选 写道
当试图在渲染器被选中为其设置状态时,项目渲染器的数据必须与List或DataGridColumn中的selectedItem进行比较,而不是与selectedIndex比较,因为selectedIndex不能指出是哪个渲染器被选中。实际上,被选中的渲染器能够在List中很好地滚动显示。
通过这段文字可以知道,产生序号乱序的原因是我滚动了滚动条。不能仅仅使用listData.selectedIndex+1的方法赋值。必须要用itemRenderer中的数据同selectedItem进行比较。
结论:
在原来的基础上仅仅将Text控件的text属性绑定{
ArrayCollection((_listData.owner as List).dataProvider).getItemIndex(this.data)+1}
就可以实现正常的序号显示了,其实非常简单。
第一次修订:
注意组件的绑定属性:{
ArrayCollection((_listData.owner as List).dataProvider).getItemIndex(this.data)+1}中的ArrayCollection也有可能是其他类型,如XMLListCollection。
分享到:
相关推荐
利用google-iframe在flex中嵌入网页是在swf上覆盖一个div,flex与网页无法融合,这样会出现各种显示,控制问题,如页面自适应,页面显示控制,内容遮盖,网页内容不随flex滚动条滚动等,现在这些问题都解决了
Flex4.x 构建可编辑的List【带序号排列】
构建全栈式Flex、BlazeDS和Spring集成解决方案–第二部分 编写to-do list服务器端.pdf
完美的Flex多语言支持解决方案
构建全栈式Flex、BlazeDS和Spring集成解决方案。 构建全栈式Flex、BlazeDS和Spring集成解决方案
flex中文帮助flex中文帮助flex中文帮助flex中文帮助
构建全栈式Flex、BlazeDS和Spring集成解决方案–第一部分 创建Maven Flex模块
此组件是基于flex4的List 自定义了全选,反选功能
Maven构建全栈式Flex、BlazeDS和Spring集成解决方案–第二部分_编写to-do_list服务器端
flex的一个list展示 带有增加和删除功能,并带有一定的特效。
在使用list的例子,mxml组件代码。仅单个组件
实例说明了 Flex4中 Menu和List的使用。
根据项目中的实际情况,总结的Flex嵌入IFrame解决方案
Maven构建全栈式Flex、BlazeDS和Spring集成解决方案–第一部分_创建Maven_Flex模块
flex第一步
FLEX图表相关解决方案,只要你下载了 必有所获
flex中文帮助文档flex中文帮助文档
Flex Tree 刷新数据源后,重新打开指定节点的解决方案,不需要延迟等其他手段
每一章用“Chapter_N”来区分,其中,N代表章的序号,比如Chapter_2/HelloWorld表示的是第二章的示例程序HelloWorld,程序的主程序文件与程序名相同,HelloWorld文件夹下的HelloWorld.mxml即为主程序文件。...