Flex - 选项卡查看多个DataGrids和相同的dataProvider

时间:2010-05-26 05:55:13

标签: flex actionscript-3 actionscript flex4

我有一个flex应用程序,其中我有一个TabNavigator,其中包含多个选项卡和每个选项卡中的数据网格。我已经为每个网格绑定了单个数据数组。

我想要做的是将每个网格与该阵列中的一组特定数据绑定,即根据数据类型在网格之间分配数组内容。例如,以字母A开头的项目可以显示在第一个网格中,B显示在第二个网格中,以C开头显​​示在第三个网格中,依此类推。因此,您可以按字母顺序将数据分布在不同的网格上。问题是数据将由用户随机添加。

为每个网格制作一个数据阵列不是一个选项(由于设计限制)。

有什么建议吗?

提前致谢

2 个答案:

答案 0 :(得分:0)

您可能正在寻找过滤器,this article将帮助您了解过滤器背后的想法。

基本上,我理解它的方式,有一个函数将传递给每个项目,它将测试该项目的条件,如果它通过(你希望它被包含)返回true,如果它没有,则返回false “T

您需要为不同的网格创建不同的过滤功能。

我希望这会有所帮助,如果您需要更多帮助,请告诉我。

答案 1 :(得分:0)

要使用单个DataGrid和单个列表执行此操作,请在列表中使用基于选项卡激活(对于单个列表部分)更改的过滤器功能。使用单个DataGrid的一种简单(尽管可能是笨拙的)方法是将DataGrid覆盖在TabNavigator上。使用绝对布局的容器(如Canvas)很容易做到这一点:

<mx:TabNavigator x="120.7" y="127.35" width="496" height="276">
    <mx:Canvas label="Test" width="100%" height="100%">
    </mx:Canvas>
    <mx:Canvas label="Test2" width="100%" height="100%">
    </mx:Canvas>
</mx:TabNavigator>

<mx:DataGrid x="305" y="169">
    <mx:columns>
        <mx:DataGridColumn headerText="Column 1" dataField="col1"/>
        <mx:DataGridColumn headerText="Column 2" dataField="col2"/>
        <mx:DataGridColumn headerText="Column 3" dataField="col3"/>
    </mx:columns>
</mx:DataGrid>

只要在mxml中 TabNavigator之后列出了DataGrid,它就会显示在顶部。当然,您需要注意在数据网格的每个选项卡上留下适当的大小空间,依此类推。还有其他方法可以做到这一点,但这可能是最简单的,也可能是最安全的 - 假设您希望在所有标签上显示DataGrid。

但是如果是这种情况,您可能还想考虑缩小TabNavigator的大小以仅包含应该更改选项卡上的'stuff',将DataGrid保留在同一个更高级别的容器中TabNavigator但不重叠。

如果您需要DataGrid仅在某些选项卡上可见而在其他选项卡上不可见,您还可以使用actionscript在选项卡容器上调用addChild / removeChild。这很好用,removeChild的文档甚至表明这是一个典型的用途:

  

从中删除子DisplayObject   此Container的子列表。该   被移除的孩子将拥有其父母   property设置为null。孩子会的   除非明确地存在   销毁。如果你把它添加到另一个   容器,它将保留其最后一个   已知国家。