AS:在AdvancedDataGrid中获取所选行的XML属性

时间:2011-03-18 09:40:25

标签: xml actionscript advanceddatagrid

我使用XML数据填充AdvancedDataGrid,这是我使用的XML数据的一个示例:

<list>
  <root>
    <item text="Folder" id="1" isBranch="true" classes="folder">
      <item text="SubFolder" id="2" isBranch="true" classes="folder">
        <item text="Item" id="3" isBranch="false" classes="item" col1="1" col2="2" />
      </item>
      <item text="Folder" id="4" isBranch="true" classes="folder">
        <item text="Item" id="5" isBranch="false" classes="item" col1="3" col2="4"/>
      </item>
    </item>
  </root>
</list>

用户点击一个单元格后,我想检索他点击的节点的属性。

因此,例如,如果用户单击ID为3的Item的第1列,我需要访问此XML节点的属性:

<item text="Item" id="3" isBranch="false" classes="item" col1="1" col2="2" />

所以我可以找到这个项目的ID(在这种情况下是3)。

请注意,此ID永远不会显示在AdvancedDataGrid中。

1 个答案:

答案 0 :(得分:2)

我不知道这是不是你想要的,但在这里。

<controls:AdvancedDataGrid dataProvider="{ new HierarchicalData(list) }"
                           itemClick="{ idLabel.text = event.itemRenderer.data.@id }">

    <controls:columns>
        <!-- some sample columns -->
        <advanceddatagridclasses:AdvancedDataGridColumn dataField="@text"/>
        <advanceddatagridclasses:AdvancedDataGridColumn dataField="@isBranch"/>
        <advanceddatagridclasses:AdvancedDataGridColumn dataField="@col1"/>
        <advanceddatagridclasses:AdvancedDataGridColumn dataField="@col2"/>
    </controls:columns>

</controls:AdvancedDataGrid>

<s:Label id="idLabel" />

要保留的重点是这一行:

event.itemRenderer.data.@id

每当您单击AdvancedDataGrid项目时,将调度“itemClick”事件。此事件包含对 itemRenderer 的引用,该引用又包含对该行上显示的数据的引用。在这种情况下,要访问 id 属性,您只需使用data.@id即可。

如果你愿意,你可以这样:

<controls:AdvancedDataGrid dataProvider="{ new HierarchicalData(list) }"
                           itemClick="{ doSomething(event.itemRenderer.data) }">

然后创建一个doSomething方法,它将接收“clicked”XML节点作为参数。