flex中DataGrid根据xml文件显示
2010-07-01 00:00codeif.com
使用HttpService获取xml数据,然后显示在DataGrid中去。可以看下面的例子:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="getData()" backgroundColor="#ffffff">
<mx:Script>
<![CDATA[
import mx.collections.ICollectionView;
import mx.binding.utils.BindingUtils;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
[Bindable]
public var dp:ICollectionView = null;
private function salesRPCResult(event:ResultEvent):void{
dp = event.result.salesData.dailySales;
}
private function showFault(event:FaultEvent):void{
trace(event.fault.faultCode+":"+event.fault.faultString);
}
private function getData():void{
salesRPC.send();
}
]]>
</mx:Script>
<mx:HTTPService id="salesRPC"
url="http://www.flexgrocer.com/rawSalesData.xml"
result="salesRPCResult(event)"
fault="showFault(event)" />
<mx:DataGrid dataProvider="{dp}" width="100%" height="100%" />
</mx:Application>
在例子中dp公共变量的数据类型是ICollectionView并设为[Bindable],这样DataGrid可以在改属性值改变是更新其数据。
[Bindable]
public var dp:ICollectionView = null;
向属性传入值以前,会一直使用null值作为初始属性的初始状态。[Bindable]元数据标签用于通知编译器,本属性会被应用程序中另外的某处所监视。
