Displaying dynamically loaded XML in a DataGrid control in Flex – QName
Posted on September 18, 2010 | No Comments
<?xml version="1.0" encoding="utf-8"?> <mx:Application name="DataGrid_XML_test" xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:net="flash.net.*" layout="vertical" verticalAlign="middle" backgroundColor="white"> <mx:Script> <![CDATA[ import mx.events.ListEvent; import mx.controls.dataGridClasses.DataGridColumn; public namespace sitemapNS = "http://www.google.com/schemas/sitemap/0.84"; private function loadXML(targetURL:String):void { urlLdr.load(new URLRequest(targetURL)); loadBtn.enabled = false; } private function urlLdr_complete(evt:Event):void { var xmlData:XML = new XML(URLLoader(evt.currentTarget).data); xmlListColl = new XMLListCollection(xmlData.children()); dataGrid.enabled = true; loadBtn.enabled = true; } private function dataGrid_labelFunc(item:XML, col:DataGridColumn):String { var qN:QName = new QName(sitemapNS, col.dataField); return item[qN].text(); } private function dataGrid_dateLabelFunc(item:XML, col:DataGridColumn):String { var qN:QName = new QName(sitemapNS, col.dataField); var value:String = item[qN].text(); value = value.replace(/-/g, "/"); value = value.replace("T", " "); value = value.replace("+00:00", ""); return value; } private function dataGrid_itemDoubleClick(evt:ListEvent):void { use namespace sitemapNS; var url:String = evt.itemRenderer.data.loc; navigateToURL(new URLRequest(url), "_blank"); } ]]> </mx:Script> <net:URLLoader id="urlLdr" complete="urlLdr_complete(event);" /> <mx:XMLListCollection id="xmlListColl" /> <mx:ApplicationControlBar dock="true"> <mx:Button id="loadBtn" label="Load XML" click="loadXML('http://blog.sameerast.com/sitemap.xml');" /> <mx:Spacer width="100%" /> <mx:ProgressBar id="progressBar" mode="event" source="{urlLdr}" labelPlacement="center" /> </mx:ApplicationControlBar> <mx:DataGrid id="dataGrid" dataProvider="{xmlListColl}" doubleClickEnabled="true" itemDoubleClick="dataGrid_itemDoubleClick(event);" enabled="false" width="100%" height="100%"> <mx:columns> <mx:DataGridColumn dataField="loc" labelFunction="dataGrid_labelFunc" itemRenderer="mx.controls.Label" /> <mx:DataGridColumn dataField="lastmod" labelFunction="dataGrid_dateLabelFunc" width="150" /> <mx:DataGridColumn dataField="changefreq" labelFunction="dataGrid_labelFunc" width="100" /> <mx:DataGridColumn dataField="priority" labelFunction="dataGrid_labelFunc" width="100" /> </mx:columns> </mx:DataGrid> </mx:Application>
Category: Flex 3, Flex 3 Action Script 3 Tutorial
Tags: load() | QName() | URLRequest() | XML | XMLListCollection()
Tags: load() | QName() | URLRequest() | XML | XMLListCollection()
Comments
Leave a Reply
You must be logged in to post a comment.