如何创建Flex 3 Datagrid仅显示ArrayCollection结果的一行?

时间:2010-08-11 18:25:45

标签: flex flex3 datagrid combobox arraycollection

有没有办法让Flex 3 Datagrid只显示arrayCollection的第一个节点,而不是显示所有arrayCollection的数据?

    myDGArray = [
    {Name: "Judy", Talent: 'Pole-Dancing', Score: "40"},
    {Name: "Jane", Talent: 'Yodelling',    Score: "65"},
    {Name: "Jim",  Talent: 'Singing',      Score: "82"}
      ]

myAC:ArrayCollection = new ArrayCollection(myDGArray);

如果我将datagrid的dataProvider设置为myAC,那么myAc的所有结果都将列在dataGrid中。如何让它只显示第一个人的数据,不那么热门的朱迪?

(myDGArray中的数据实际上来自数据库调用。所以,我想立即将其全部返回而不是进行多次服务器调用。)

我的目标是让datagrid加载第一个人的数据。然后让一个comboBox控制dataGrid中显示的数据。因此,如果用户在comboBox中选择“Jim”,那么Jim的数据将显示在dataGrid中。

有任何建议或意见吗?

谢谢。

-Laxmidi

3 个答案:

答案 0 :(得分:2)

试试这个

<mx:DataGrid dataProvider="myAC">
<mx:columns>
<mx:DataGridColumn headerText="Name" dataField="Name"/>
<mx:DataGridColumn headerText="Talent"/>
<mx:DataGridColumn headerText="Score"/>
</mx:columns>
</mx:DataGrid>

答案 1 :(得分:0)

如果您始终只想在DataGrid中显示一条记录,那么您可能不需要使用(相当重的)DataGrid组件。我会将数据提供程序分配给组合框,并提供一些简单的HBox with Labels以获取详细信息。您可以将标签文本绑定到所选组合框项的任何细节:

<mx:Label text="{'Talent: " + myCombo.selectedItem.Talent}"/>

答案 2 :(得分:0)

试试这个

<mx:DataGrid dataProvider="myAC">
<mx:columns>
<mx:DataGridColumn headerText="Name" dataField="Name"/>
<mx:DataGridColumn headerText="Talent"/>
<mx:DataGridColumn headerText="Score"/>
</mx:columns>
</mx:DataGrid>