Flex + XML + dataProvider:将dataProvider指定为ComboBox&数据网格

时间:2011-03-17 09:22:57

标签: xml flex

我从PHP脚本获取XML响应,我使用[lastResult]属性访问该脚本 问题是如下:
XML结构:

<Main>
  <Category1>
    <Data Name="Data1">
      <Item>
        <Name>foo</Name>
        <Info>bar</Info>
      </Item>
      <Item>
        <Name>baz</Name>
        <Info>FOO</Info>
      </Item>
    </Data>
    <Data Name="Data2">
    </Data>
  </Category1>
  <Category2>
    </Category2>
</Main>

现在我将DataGrid的dataProvider指定为

'lastResult.Category1.Data.(@Name == "Data1").Item'

这个工作得足够好&amp;我的数据输出正确。我唯一需要的是如何访问<Data>标签的@Name属性 我可以输出姓名&amp;通过指定项目的信息:

'Name'
'Info'

但是当我选择Data.Item作为dataProvider时,我对如何指定父<Data>标签的@Name属性毫无头绪。

从我可以做到的,我需要向父节点上升1级,但我找不到任何引用,以便在使用[lastResult] dataProvider时如何上升一级(所有都使用XMLListCollection ::父())
任何帮助表示赞赏。

的问候,
Nisheeth Barthwal

1 个答案:

答案 0 :(得分:0)

lastResult.Category1.Data.(@Name == "Data1").Item为您提供在Data1中找到的项目的XMLList。每个项目都是XML类型,您可以调用parent()函数获取父节点:

//get first item
var item:XML = lastResult.Category1.Data.(@Name == "Data1").Item[0];
trace("Data.@Name: " + item.parent().@Name);

编辑:要使其在DataGrid中运行,您需要使用列的labelFunction属性。将其设置为:

function formatItem(item:Object, column:DataGridColumn):String {
    return (item as XML).parent().@Name;
}