Поле данных атрибута xml
Почему я не могу связать атрибут 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>
3 ответа
Вы устанавливаете dataProvider как {sampleXML.contact}
Это должно быть {sampleXML.contacts}
Вы также можете попробовать использовать XMLListCollection, как показано ниже, и предоставить "contactsList" в качестве поставщика данных для сетки данных.
<mx:XML id="tempXML"
source="assets/contacts.xml" />
<mx:XMLListCollection id="contactsList"
source="{tempXML.contacts}" />
Предположение: xml хранится в папке активов, а имя xml - contacts.xml.
Попробуйте изменить вашу 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