我在Flex DataGrid中有一个复选框,当我滚动时,其他行会被随机选中/取消选中。
阅读完:Creating a column of RadioButtons in Adobe Flex
很明显,itemRenderers正在被回收,但我在解决方案中遇到的问题是它将有关视图的信息移动到模型中。
有没有人有更好的方法来解决它,这不会强迫我将UI的信息放入我的actionscript模型类中? (在我的例子中,我将传入的XML数据转换为actionscript类,并且这些数据被绑定到我的数据网格。)
感谢您的帮助。
谢谢大家。很棒的提示。不幸的是,保持模型纯净变得过于开销,所以我只是污染了模型,就像我原来帖子中的链接一样。 :(至少它有效。
Chetan,整洁的想法..我试着用了差不多整整一天但没有运气。
brd6644,关于分离两个模型类的好想法..我可能会回去再做一遍。
答案 0 :(得分:1)
你可以创建一个DataGrid的子类,它在内部存储检查/取消选中的行(Array / Collection of Boolean),但是当你对它进行排序或过滤时,你会有一个时间保持与dataProvider同步。我想你可以使用一个由dataProvider的每个索引中的对象键入的Dictionary,并用一个布尔值来表示它是否被选中。这至少会使您与排序/过滤问题隔离开来。如果您的dataProvider中有重复的引用,则无效。
或者,您可以创建ActionScript模型类的子类并向其添加“selected”属性,然后编写一些简单的实用程序方法以在两者之间进行“转换”。这样你的View只处理“ViewModel”类,其他层(特别是服务器端)只处理真正的“Model”类。
答案 1 :(得分:0)
除了cliff.meyers所说的,还有第三种方法可以创建一个自定义的IList类,如Alex Harui在此blog post中所述。它实际上非常聪明,并且更加清晰,因为它不需要对组件进行子类化或污染模型类。