AS: получение атрибута XML выбранной строки в AdvancedDataGrid - PullRequest
0 голосов
/ 18 марта 2011

Я заполняю AdvancedDataGrid данными XML, это пример данных 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>

После того, как пользователь щелкает ячейку, я хочу получить атрибуты узлаон нажал.

Так, например, если пользователь щелкает столбец 1 элемента с идентификатором 3, мне нужно получить доступ к атрибутам этого узла XML:

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

ТакЯ могу узнать идентификатор этого элемента (в данном случае 3).

Обратите внимание, что этот идентификатор никогда не отображается в AdvancedDataGrid.

1 Ответ

2 голосов
/ 18 марта 2011

Я не знаю, если это то, что вы хотите, но здесь это идет.

<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, который получит «щелкающий» узел XML в качестве параметра.

...