为什么我不能绑定数据字段的xml属性? (flex 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>
答案 0 :(得分:1)
您将dataProvider设置为{sampleXML.contact}
应该是{sampleXML.contacts}
答案 1 :(得分:0)
您也可以尝试使用XMLListCollection,如下所示,并将“contactsList”作为数据提供者提供给数据网格。
<mx:XML id="tempXML"
source="assets/contacts.xml" />
<mx:XMLListCollection id="contactsList"
source="{tempXML.contacts}" />
假设:xml存储在assets文件夹中,xml名称是contacts.xml
答案 2 :(得分: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,那么从你的dataField名称前面删除“@”