0

为什么我不能为数据字段绑定 xml 属性?(弹性 4)

<fx:Model id="sampleXML">
        <contacts>
            <contact firstName="Joe" lastName="Smith" emailAddress="joe@smith.com" />
            <contact firstName="Sally" lastName="Lally" emailAddress="sally@lally.com" />
            <contact firstName="Albert" lastName="Rigdon" emailAddress="albert@rigdon.com" />
        </contacts>
    </fx:Model>
<mx:DataGrid dataProvider="{sampleXML.contact}" id="dg">
    <mx:columns>
        <mx:DataGridColumn headerText="First Name" dataField="@firstName"  />
        <mx:DataGridColumn headerText="Last Name" dataField="@lastName" />
        <mx:DataGridColumn headerText="Email Address" dataField="@emailAddress" />
    </mx:columns>
</mx:DataGrid>
4

3 回答 3

1

您将 dataProvider 设置为 {sampleXML.contact}

它应该是 {sampleXML.contacts}

于 2011-03-15T18:17:17.580 回答
0

如果您想使用相同的 @ 表示法,请尝试将您的 fx:Model 更改为 fx:XML。模型将 XML 反序列化为一个对象,这意味着您的 @notation 不会给出预期的结果。以下示例有效:

<fx:XML id="sampleXML">
   <contacts>
      <contact firstName="Joe" lastName="Smith" emailAddress="joe@smith.com" />
      <contact firstName="Sally" lastName="Lally" emailAddress="sally@lally.com" />
      <contact firstName="Albert" lastName="Rigdon" emailAddress="albert@rigdon.com"/>
   </contacts>
</fx:XML>

<mx:DataGrid dataProvider="{sampleXML.contact}" id="dg">
   <mx:columns>
      <mx:DataGridColumn headerText="First Name" dataField="@firstName"  />
      <mx:DataGridColumn headerText="Last Name" dataField="@lastName" />
      <mx:DataGridColumn headerText="Email Address" dataField="@emailAddress" />
   </mx:columns>
</mx:DataGrid>

如果您想使用 fx:Model,请从您的数据字段名称前面删除“@”

于 2011-03-16T08:36:04.957 回答
0

您还可以尝试使用如下所示的 XMLListCollection,并将“contactsList”作为数据提供者提供给数据网格。

<mx:XML id="tempXML"
        source="assets/contacts.xml" />

<mx:XMLListCollection id="contactsList"
        source="{tempXML.contacts}" />

假设:xml存储在assets文件夹中,xml名称为contacts.xml

于 2011-03-15T20:55:18.933 回答