我有一个flex应用程序,其中我有一个TabNavigator,其中包含多个选项卡和每个选项卡中的数据网格。我已经为每个网格绑定了单个数据数组。
我想要做的是将每个网格与该阵列中的一组特定数据绑定,即根据数据类型在网格之间分配数组内容。例如,以字母A开头的项目可以显示在第一个网格中,B显示在第二个网格中,以C开头显示在第三个网格中,依此类推。因此,您可以按字母顺序将数据分布在不同的网格上。问题是数据将由用户随机添加。
为每个网格制作一个数据阵列不是一个选项(由于设计限制)。
有什么建议吗?
提前致谢
答案 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。孩子会的 除非明确地存在 销毁。如果你把它添加到另一个 容器,它将保留其最后一个 已知国家。