我使用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中。
答案 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节点作为参数。