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.
Sameera at LinkedIn
