Flex Datagrid中的复选框在滚动中破坏

问题描述:

我在Flex DataGrid中有一个复选框,当我滚动时,其他行会随机选中/取消选中。Flex Datagrid中的复选框在滚动中破坏

阅读结束后:Creating a column of RadioButtons in Adobe Flex

很明显的是,itemRenderer是越来越回收,但我有解决问题的提出有其移动信息有关视图到模型中。

有没有人有更好的解决方法,这不会强迫我把UI的信息放到我的动作模型类中? (在我的情况下,我将传入的XML数据转换为动作类,并且这些都绑定到我的数据网格)。

感谢您的帮助。


谢谢大家。很棒的提示。不幸的是,保持模型纯净度变得太高,所以我刚刚污染了模型,就像我原来的帖子中的链接。 :(至少它的作品。

扯谈,整洁的想法..我试图与这虽然工作了将近一整天,没有运气。

brd6644,在隔开两个模型类善念..我可能

您可以创建一个DataGrid的子类,它在内部存储哪些行被选中/取消选中(Array/Collection of Boolean),但是您会有一个与dataProvider保持同步的恶魔当我对它进行排序或过滤时,我想你可以使用一个字典,该字典在dataProvider的每个索引中用对象作为键值,并用一个布尔值来表示它是否被选中,这至少会隔离你从排序/过滤问题。如果你的dataProvider中有重复的引用,这将不起作用。

或者,您可以创建ActionScript模型类的子类并将“selected”属性添加到它,然后编写一些简单的实用工具方法来在两者之间进行“转换”。这样你的View只处理“ViewModel”类和其他层(特别是服务器端)只处理真正的“Model”类。

+0

我第二个想法。我通常为所有分配给网格的模型类创建一个基类,在这里我定义了一个boolean isChecked(在我的设计中需要的其他一些属性中)。 – 2009-07-28 23:45:44

除了cliff.meyers说的,还有第三种选择是创建一个自定义IList类,如Alex Harui在blog post中所述。它实际上非常聪明,而且更干净,因为它不需要子类化组件或污染模型类。