当前位置: > > > Flex4 - DataGrid使用xml格式的数据做数据源

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>

评论0