【问题标题】:xml attribute datafield datagridxml 属性数据字段数据网格
【发布时间】:2011-07-16 00:30:53
【问题描述】:
为什么我不能为数据字段绑定 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>
【问题讨论】:
标签:
xml
apache-flex
datagrid
datafield
【解决方案1】:
如果您想使用相同的 @ 表示法,请尝试将您的 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,请将“@”从您的数据字段名称前面删除
【解决方案2】:
您也可以尝试使用如下所示的 XMLListCollection,并将“contactsList”作为数据提供者提供给数据网格。
<mx:XML id="tempXML"
source="assets/contacts.xml" />
<mx:XMLListCollection id="contactsList"
source="{tempXML.contacts}" />
假设:xml存储在assets文件夹中,xml名称为contacts.xml
【解决方案3】:
您将 dataProvider 设置为 {sampleXML.contact}
应该是{sampleXML.contacts}