Flex4 - DataGrid使用xml格式的数据做数据源
在Flex3中,mx库的DataGrid可以直接使用XMLList格式的数据做数据源。
而Flex4中,spark库的DataGrid不能直接绑定xml,因为其dataProvider是需要实现Ilist接口的。
解决办法:使用XMLListCollection将XMLList数据封装起来再给DataGrid使用。
代码如下:
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx"> <fx:Declarations> <fx:XML id="dgData"> <data> <item name="小王" sex="男"/> <item name="小军" sex="男"/> </data> </fx:XML> <s:XMLListCollection id="dgDataCollection" source="{dgData.children()}"/> </fx:Declarations> <s:layout> <s:VerticalLayout gap="20" paddingLeft="20" paddingTop="20"/> </s:layout> <s:DataGrid dataProvider="{dgDataCollection}"> <s:columns> <s:ArrayList> <s:GridColumn headerText="姓名" dataField="@name"/> <s:GridColumn headerText="性别" dataField="@sex"/> </s:ArrayList> </s:columns> </s:DataGrid> <s:DataGrid dataProvider="{new XMLListCollection(dgData.children())}"> <s:columns> <s:ArrayList> <s:GridColumn headerText="姓名" dataField="@name"/> <s:GridColumn headerText="性别" dataField="@sex"/> </s:ArrayList> </s:columns> </s:DataGrid> </s:Application>