<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Flex Examples &#187; sortCompareFunction</title>
	<atom:link href="http://blog.flexexamples.com/tag/sortcomparefunction/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.flexexamples.com</link>
	<description>Just a bunch of Adobe Flex Examples</description>
	<lastBuildDate>Wed, 26 Jan 2011 18:09:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Setting a DataGrid control&#8217;s data provider to an XML object in Flex</title>
		<link>http://blog.flexexamples.com/2008/11/05/setting-a-datagrid-controls-data-provider-to-an-xml-object-in-flex/</link>
		<comments>http://blog.flexexamples.com/2008/11/05/setting-a-datagrid-controls-data-provider-to-an-xml-object-in-flex/#comments</comments>
		<pubDate>Thu, 06 Nov 2008 06:05:21 +0000</pubDate>
		<dc:creator>Peter deHaan</dc:creator>
				<category><![CDATA[DataGrid]]></category>
		<category><![CDATA[DataGridColumn]]></category>
		<category><![CDATA[NumericCompare]]></category>
		<category><![CDATA[itemToLabel()]]></category>
		<category><![CDATA[labelFunction]]></category>
		<category><![CDATA[sortCompareFunction]]></category>
		<category><![CDATA[stringCompare]]></category>

		<guid isPermaLink="false">http://blog.flexexamples.com/2008/11/05/setting-a-datagrid-controls-data-provider-to-an-xml-object-in-flex/</guid>
		<description><![CDATA[<p>The following example shows how you can use an XML object as a data provider for a Flex DataGrid control and use a custom label function to display the XML node&#8217;s name.</p> <p>Full code after the jump.</p> <p></p> <p class="download"><a href="http://blog.flexexamples.com/wp-content/uploads/DataGrid_dataProvider_XML_test2/bin/srcview/source/main.mxml.html">View MXML</a></p> &#60;?xml version="1.0" encoding="utf-8"?&#62; &#60;!-- http://blog.flexexamples.com/2008/11/05/setting-a-datagrid-controls-data-provider-to-an-xml-object-in-flex/ --&#62; &#60;mx:Application name="DataGrid_dataProvider_XML_test2" xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" verticalAlign="middle" backgroundColor="white"&#62; &#60;mx:Script&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>The following example shows how you can use an XML object as a data provider for a Flex DataGrid control and use a custom label function to display the XML node&#8217;s name.</p>
<p>Full code after the jump.</p>
<p><span id="more-858"></span></p>
<p class="download"><a href="http://blog.flexexamples.com/wp-content/uploads/DataGrid_dataProvider_XML_test2/bin/srcview/source/main.mxml.html">View MXML</a></p>
<pre class="code">
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;!-- http://blog.flexexamples.com/2008/11/05/setting-a-datagrid-controls-data-provider-to-an-xml-object-in-flex/ --&gt;
&lt;mx:Application name="DataGrid_dataProvider_XML_test2"
        xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white"&gt;

    &lt;mx:Script&gt;
        &lt;![CDATA[
            import mx.controls.dataGridClasses.DataGridColumn;
            import mx.utils.ObjectUtil;

            private function labelFunc(item:XML, col:DataGridColumn):String {
                return item.name();
            }

            private function nameSortCompareFunc(itemA:XML, itemB:XML):int {
                return ObjectUtil.stringCompare(dataGridCol1.itemToLabel(itemA), dataGridCol1.itemToLabel(itemB), true);
            }

            private function typeSortCompareFunc(itemA:XML, itemB:XML):int {
                return ObjectUtil.numericCompare(itemA.@type, itemB.@type);
            }
        ]]&gt;
    &lt;/mx:Script&gt;

    &lt;mx:XML id="xmlDP" source="data/log.xml" /&gt;

    &lt;mx:DataGrid id="dataGrid"
            dataProvider="{xmlDP.children()}"
            verticalScrollPolicy="on"&gt;
        &lt;mx:columns&gt;
            &lt;mx:DataGridColumn id="dataGridCol1"
                    headerText="Name"
                    labelFunction="labelFunc"
                    sortCompareFunction="nameSortCompareFunc"
                    width="80"/&gt;
            &lt;mx:DataGridColumn id="dataGridCol2"
                    dataField="@type"
                    headerText="Type"
                    sortCompareFunction="typeSortCompareFunc"
                    width="50" /&gt;
            &lt;mx:DataGridColumn id="dataGridCol3"
                    dataField="@message"
                    headerText="Message"
                    width="200" /&gt;
        &lt;/mx:columns&gt;
    &lt;/mx:DataGrid&gt;

&lt;/mx:Application&gt;
</pre>
<p class="download"><a href="http://blog.flexexamples.com/wp-content/uploads/DataGrid_dataProvider_XML_test2/bin/srcview/source/data/log.xml.txt">data/log.xml</a></p>
<pre class="code">
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;!-- http://blog.flexexamples.com/2008/11/05/setting-a-datagrid-controls-data-provider-to-an-xml-object-in-flex/ --&gt;
&lt;log&gt;
    &lt;error type="13" message="Cannot do something or other." /&gt;
    &lt;warning type="49" message="Whoa, that was close!" /&gt;
    &lt;error type="134" message="Abort! Abort!" /&gt;
    &lt;error type="99" message="Wait, do you smell smoke?" /&gt;
&lt;/log&gt;
</pre>
<p class="information"><a href="http://blog.flexexamples.com/wp-content/uploads/DataGrid_dataProvider_XML_test2/bin/srcview/index.html">View source</a> is enabled in the following example.</p>
<p><iframe src="http://blog.flexexamples.com/wp-content/uploads/DataGrid_dataProvider_XML_test2/bin/main.html" width="100%" height="220"></iframe></p>
<p>Due to popular demand, here is the &#8220;same&#8221; example in a more ActionScript friendly format:</p>
<p class="download"><a href="http://blog.flexexamples.com/wp-content/uploads/DataGrid_dataProvider_XML_test2/bin/srcview/source/main2.mxml.html">View MXML</a></p>
<pre class="code">
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;!-- http://blog.flexexamples.com/2008/11/05/setting-a-datagrid-controls-data-provider-to-an-xml-object-in-flex/ --&gt;
&lt;mx:Application name="DataGrid_dataProvider_XML_test2"
        xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white"
        initialize="init();"&gt;

    &lt;mx:XML id="xmlDP" source="data/log.xml" /&gt;

    &lt;mx:Script&gt;
        &lt;![CDATA[
            import mx.core.ScrollPolicy;
            import mx.controls.DataGrid;
            import mx.controls.dataGridClasses.DataGridColumn;
            import mx.utils.ObjectUtil;

            private var dataGrid:DataGrid;
            private var dataGridCol1:DataGridColumn;
            private var dataGridCol2:DataGridColumn;
            private var dataGridCol3:DataGridColumn;

            private function init():void {
                dataGridCol1 = new DataGridColumn();
                dataGridCol1.headerText = "Name";
                dataGridCol1.labelFunction = labelFunc;
                dataGridCol1.sortCompareFunction = nameSortCompareFunc;
                dataGridCol1.width = 80;

                dataGridCol2 = new DataGridColumn("@type");
                dataGridCol2.headerText = "Type";
                dataGridCol2.sortCompareFunction = typeSortCompareFunc;
                dataGridCol2.width = 50;

                dataGridCol3 = new DataGridColumn("@message");
                dataGridCol3.headerText = "Message";
                dataGridCol3.width = 200;

                dataGrid = new DataGrid();
                dataGrid.columns = [dataGridCol1, dataGridCol2, dataGridCol3];
                dataGrid.dataProvider = xmlDP.children();
                dataGrid.verticalScrollPolicy = ScrollPolicy.ON;
                addChild(dataGrid);
            }

            private function labelFunc(item:XML, col:DataGridColumn):String {
                return item.name();
            }

            private function nameSortCompareFunc(itemA:XML, itemB:XML):int {
                return ObjectUtil.stringCompare(dataGridCol1.itemToLabel(itemA), dataGridCol1.itemToLabel(itemB), true);
            }

            private function typeSortCompareFunc(itemA:XML, itemB:XML):int {
                return ObjectUtil.numericCompare(itemA.@type, itemB.@type);
            }
        ]]&gt;
    &lt;/mx:Script&gt;

&lt;/mx:Application&gt;
</pre>
<div class="evernoteSiteMemory"><a href="javascript:" onclick="Evernote.doClip({title: 'Setting a DataGrid control\&#039;s data provider to an XML object in Flex on FlexExamples.com',url: 'http://blog.flexexamples.com/2008/11/05/setting-a-datagrid-controls-data-provider-to-an-xml-object-in-flex/',contentID: 'post-858',code: 'Pete9667',suggestNotebook: 'FlexExamples',suggestTags: 'itemToLabel(),labelFunction,sortCompareFunction,stringCompare',providerName: 'FlexExamples.com',styling: 'text' });return false" class="evernoteSiteMemoryLink"><img src="http://static.evernote.com/article-clipper-remember.png" class="evernoteSiteMemoryButton" />
				</a>				<div class="evernoteSiteMemoryClear">&nbsp;</div>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.flexexamples.com/2008/11/05/setting-a-datagrid-controls-data-provider-to-an-xml-object-in-flex/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Creating a custom sort on a DataGrid control in Flex</title>
		<link>http://blog.flexexamples.com/2008/04/09/creating-a-custom-sort-on-a-datagrid-control-in-flex/</link>
		<comments>http://blog.flexexamples.com/2008/04/09/creating-a-custom-sort-on-a-datagrid-control-in-flex/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 04:12:10 +0000</pubDate>
		<dc:creator>Peter deHaan</dc:creator>
				<category><![CDATA[DataGrid]]></category>
		<category><![CDATA[Sort]]></category>
		<category><![CDATA[SortField]]></category>
		<category><![CDATA[compareFunction]]></category>
		<category><![CDATA[descending]]></category>
		<category><![CDATA[sortCompareFunction]]></category>
		<category><![CDATA[stringCompare]]></category>

		<guid isPermaLink="false">http://blog.flexexamples.com/2008/04/09/creating-a-custom-sort-on-a-datagrid-control-in-flex/</guid>
		<description><![CDATA[<p>The following example shows how you can create a custom sort on a Flex DataGrid control by using the SortField class and creating a custom compare function.</p> <p>Full code after the jump.</p> <p></p> <p class="download"><a href="http://blog.flexexamples.com/wp-content/uploads/SortField_compareFunction_test/bin/srcview/source/main.mxml.html">View MXML</a></p> &#60;?xml version="1.0" encoding="utf-8"?&#62; &#60;!-- http://blog.flexexamples.com/2008/04/09/creating-a-custom-sort-on-a-datagrid-control-in-flex/ --&#62; &#60;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" verticalAlign="middle" backgroundColor="white"&#62; &#60;mx:Script&#62; &#60;![CDATA[ import mx.collections.SortField; import mx.collections.Sort; import [...]]]></description>
			<content:encoded><![CDATA[<p>The following example shows how you can create a custom sort on a Flex DataGrid control by using the SortField class and creating a custom compare function.</p>
<p>Full code after the jump.</p>
<p><span id="more-590"></span></p>
<p class="download"><a href="http://blog.flexexamples.com/wp-content/uploads/SortField_compareFunction_test/bin/srcview/source/main.mxml.html">View MXML</a></p>
<pre class="code">
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;!-- http://blog.flexexamples.com/2008/04/09/creating-a-custom-sort-on-a-datagrid-control-in-flex/ --&gt;
&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white"&gt;

    &lt;mx:Script&gt;
        &lt;![CDATA[
            import mx.collections.SortField;
            import mx.collections.Sort;
            import mx.controls.dataGridClasses.DataGridColumn;
            import mx.utils.ObjectUtil;

            private function sortOld():void {
                var sortField:SortField = new SortField();
                sortField.compareFunction = test2_compareFunc;
                sortField.descending = checkBox.selected;

                var oldSort:Sort = new Sort();
                oldSort.fields = [sortField];

                xmlListColl.sort = oldSort;
                xmlListColl.refresh();
            }

            private function sortNew():void {
                var sortField:SortField = new SortField();
                sortField.compareFunction = test3_compareFunc;
                sortField.descending = checkBox.selected;

                var sort:Sort = new Sort();
                sort.fields = [sortField];

                xmlListColl.sort = sort;
                xmlListColl.refresh();
            }

            private function resetSort():void {
                xmlListColl.sort = null;
                xmlListColl.refresh();
            }

            private function dataGridCol_labelFunc(item:XML, col:DataGridColumn):String {
                return item.*.(@name == col.dataField).text();
            }

            private function test2_compareFunc(itemA:XML, itemB:XML):int {
                var valueA:String = itemA.test2.text();
                var valueB:String = itemB.test2.text();
                return ObjectUtil.stringCompare(valueA, valueB);
            }

            private function test3_compareFunc(itemA:XML, itemB:XML):int {
                var valueA:String = itemA.test3.text();
                var valueB:String = itemB.test3.text();
                return ObjectUtil.stringCompare(valueA, valueB);
            }
        ]]&gt;
    &lt;/mx:Script&gt;

    &lt;mx:XML id="tests" source="tests.xml" /&gt;
    &lt;mx:XMLListCollection id="xmlListColl" source="{tests.test}" /&gt;

    &lt;mx:ApplicationControlBar dock="true"&gt;
        &lt;mx:CheckBox id="checkBox" label="descending:" labelPlacement="left" /&gt;

        &lt;mx:Button label="Sort 'old'"
                click="sortOld();" /&gt;

        &lt;mx:Button label="Sort 'new'"
                click="sortNew();" /&gt;

        &lt;mx:Button label="Reset sort"
                click="resetSort();" /&gt;
    &lt;/mx:ApplicationControlBar&gt;

    &lt;mx:DataGrid id="dataGrid"
            dataProvider="{xmlListColl}"
            width="300"
            verticalScrollPolicy="on"
            sortableColumns="true"&gt;
        &lt;mx:columns&gt;
            &lt;mx:DataGridColumn dataField="old"
                    labelFunction="dataGridCol_labelFunc"
                    sortCompareFunction="test2_compareFunc" /&gt;
            &lt;mx:DataGridColumn dataField="new"
                    labelFunction="dataGridCol_labelFunc"
                    sortCompareFunction="test3_compareFunc"  /&gt;
        &lt;/mx:columns&gt;
    &lt;/mx:DataGrid&gt;

&lt;/mx:Application&gt;</pre>
<p class="download">tests.xml</p>
<pre class="code">
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;!-- http://blog.flexexamples.com/2008/04/09/creating-a-custom-sort-on-a-datagrid-control-in-flex/ --&gt;
&lt;tests&gt;
    &lt;test name="group1"&gt;
        &lt;test2 name="old"&gt;One (old)&lt;/test2&gt;
        &lt;test3 name="new"&gt;Un (new)&lt;/test3&gt;
    &lt;/test&gt;
    &lt;test name="group2"&gt;
        &lt;test2 name="old"&gt;Two (old)&lt;/test2&gt;
        &lt;test3 name="new"&gt;Deux (new)&lt;/test3&gt;
    &lt;/test&gt;

    &lt;test name="group8"&gt;
        &lt;test2 name="old"&gt;Eight (old)&lt;/test2&gt;
        &lt;test3 name="new"&gt;Huit (new)&lt;/test3&gt;
    &lt;/test&gt;
&lt;/tests&gt;</pre>
<p class="information"><a href="http://blog.flexexamples.com/wp-content/uploads/SortField_compareFunction_test/bin/srcview/index.html">View source</a> is enabled in the following example.</p>
<p><iframe src="http://blog.flexexamples.com/wp-content/uploads/SortField_compareFunction_test/bin/main.html" width="100%" height="300"></iframe></p>
<div class="evernoteSiteMemory"><a href="javascript:" onclick="Evernote.doClip({title: 'Creating a custom sort on a DataGrid control in Flex on FlexExamples.com',url: 'http://blog.flexexamples.com/2008/04/09/creating-a-custom-sort-on-a-datagrid-control-in-flex/',contentID: 'post-590',code: 'Pete9667',suggestNotebook: 'FlexExamples',suggestTags: 'compareFunction,descending,sortCompareFunction,stringCompare',providerName: 'FlexExamples.com',styling: 'text' });return false" class="evernoteSiteMemoryLink"><img src="http://static.evernote.com/article-clipper-remember.png" class="evernoteSiteMemoryButton" />
				</a>				<div class="evernoteSiteMemoryClear">&nbsp;</div>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.flexexamples.com/2008/04/09/creating-a-custom-sort-on-a-datagrid-control-in-flex/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Performing case [in]sensitive sorts using the DataGrid control in Flex</title>
		<link>http://blog.flexexamples.com/2008/03/07/performing-case-insensitive-sorts-using-the-datagrid-control-in-flex/</link>
		<comments>http://blog.flexexamples.com/2008/03/07/performing-case-insensitive-sorts-using-the-datagrid-control-in-flex/#comments</comments>
		<pubDate>Sat, 08 Mar 2008 03:03:21 +0000</pubDate>
		<dc:creator>Peter deHaan</dc:creator>
				<category><![CDATA[DataGrid]]></category>
		<category><![CDATA[DataGridColumn]]></category>
		<category><![CDATA[NumericCompare]]></category>
		<category><![CDATA[ObjectUtil]]></category>
		<category><![CDATA[sortCompareFunction]]></category>
		<category><![CDATA[stringCompare]]></category>

		<guid isPermaLink="false">http://blog.flexexamples.com/2008/03/07/performing-case-insensitive-sorts-using-the-datagrid-control-in-flex/</guid>
		<description><![CDATA[<p>The following example shows how you can perform numeric sorts, case sensitive sorts, or case insensitive sorts in the Flex DataGrid control by setting a custom sort compare function on the DataGridColumn using the sortCompareFunction property, the static ObjectUtil.numericCompare() method, and the static ObjectUtil.stringCompare() method.</p> <p>Full code after the jump.</p> <p></p> <p class="download"><a href="http://blog.flexexamples.com/wp-content/uploads/DataGridColumn_sortCompareFunction_test/main.mxml">View MXML</a></p> [...]]]></description>
			<content:encoded><![CDATA[<p>The following example shows how you can perform numeric sorts, case sensitive sorts, or case insensitive sorts in the Flex DataGrid control by setting a custom sort compare function on the DataGridColumn using the <code>sortCompareFunction</code> property, the static <code>ObjectUtil.numericCompare()</code> method, and the static <code>ObjectUtil.stringCompare()</code> method.</p>
<p>Full code after the jump.</p>
<p><span id="more-549"></span></p>
<p class="download"><a href="http://blog.flexexamples.com/wp-content/uploads/DataGridColumn_sortCompareFunction_test/main.mxml">View MXML</a></p>
<pre class="code">
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;!-- http://blog.flexexamples.com/2008/03/07/performing-case-insensitive-sorts-using-the-datagrid-control-in-flex/ --&gt;
&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white"&gt;

    &lt;mx:Script&gt;
        &lt;![CDATA[
            import mx.utils.ObjectUtil;

            private function index_sortCompareFunc(itemA:Object, itemB:Object):int {
                // Make sure itemA has an "index" property.
                if (!itemA.hasOwnProperty("index")) {
                    itemA.index = null;
                }
                // Make sure itemB has an "index" property.
                if (!itemB.hasOwnProperty("index")) {
                    itemB.index = null;
                }
                // Perform a numeric sort.
                return ObjectUtil.numericCompare(itemA.index, itemB.index);
            }

            private function value_sortCompareFunc(itemA:Object, itemB:Object):int {
                // Make sure itemA has a "value" property.
                if (!itemA.hasOwnProperty("value")) {
                    itemA.value = null;
                }
                // Make sure itemB has a "value" property.
                if (!itemB.hasOwnProperty("value")) {
                    itemB.value = null;
                }
                /**
                 * Perform a string sort. If the checkbox is selected
                 * do a case insensitive sort, otherwise, dont.
                 */
                return ObjectUtil.stringCompare(itemA.value, itemB.value, checkBox.selected);
            }
        ]]&gt;
    &lt;/mx:Script&gt;

    &lt;mx:ArrayCollection id="arrColl"&gt;
        &lt;mx:source&gt;
            &lt;mx:Array&gt;
                &lt;mx:Object index="1" value="apple" /&gt;
                &lt;mx:Object index="200" value="Bear" /&gt;
                &lt;mx:Object index="3" value="corn" /&gt;
                &lt;mx:Object index="40" value="Dragon" /&gt;
                &lt;mx:Object value="eggplant" /&gt;
                &lt;mx:Object index="5" /&gt;
            &lt;/mx:Array&gt;
        &lt;/mx:source&gt;
    &lt;/mx:ArrayCollection&gt;

    &lt;mx:ApplicationControlBar dock="true"&gt;
        &lt;mx:CheckBox id="checkBox"
                label="case insensitive search:"
                labelPlacement="left"
                selected="true" /&gt;
    &lt;/mx:ApplicationControlBar&gt;

    &lt;mx:DataGrid id="dataGrid" dataProvider="{arrColl}"&gt;
        &lt;mx:columns&gt;
            &lt;mx:DataGridColumn dataField="index"
                    sortCompareFunction="index_sortCompareFunc" /&gt;
            &lt;mx:DataGridColumn dataField="value"
                    sortCompareFunction="value_sortCompareFunc" /&gt;
        &lt;/mx:columns&gt;
    &lt;/mx:DataGrid&gt;

&lt;/mx:Application&gt;
</pre>
<p class="information"><a href="http://blog.flexexamples.com/wp-content/uploads/DataGridColumn_sortCompareFunction_test/bin/srcview/index.html">View source</a> is enabled in the following example.</p>
<p><iframe src="http://blog.flexexamples.com/wp-content/uploads/DataGridColumn_sortCompareFunction_test/bin/main.html" width="100%" height="300"></iframe></p>
<div class="evernoteSiteMemory"><a href="javascript:" onclick="Evernote.doClip({title: 'Performing case [in]sensitive sorts using the DataGrid control in Flex on FlexExamples.com',url: 'http://blog.flexexamples.com/2008/03/07/performing-case-insensitive-sorts-using-the-datagrid-control-in-flex/',contentID: 'post-549',code: 'Pete9667',suggestNotebook: 'FlexExamples',suggestTags: 'sortCompareFunction,stringCompare',providerName: 'FlexExamples.com',styling: 'text' });return false" class="evernoteSiteMemoryLink"><img src="http://static.evernote.com/article-clipper-remember.png" class="evernoteSiteMemoryButton" />
				</a>				<div class="evernoteSiteMemoryClear">&nbsp;</div>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.flexexamples.com/2008/03/07/performing-case-insensitive-sorts-using-the-datagrid-control-in-flex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Formatting a Flex DataGrid control using a custom item renderer</title>
		<link>http://blog.flexexamples.com/2007/08/20/formatting-a-flex-datagrid-control-using-a-custom-item-renderer/</link>
		<comments>http://blog.flexexamples.com/2007/08/20/formatting-a-flex-datagrid-control-using-a-custom-item-renderer/#comments</comments>
		<pubDate>Tue, 21 Aug 2007 04:41:48 +0000</pubDate>
		<dc:creator>Peter deHaan</dc:creator>
				<category><![CDATA[CurrencyFormatter]]></category>
		<category><![CDATA[DataGrid]]></category>
		<category><![CDATA[itemRenderer]]></category>
		<category><![CDATA[sortCompareFunction]]></category>

		<guid isPermaLink="false">http://blog.flexexamples.com/2007/08/20/formatting-a-flex-datagrid-control-using-a-custom-item-renderer/</guid>
		<description><![CDATA[<p>The following example formats a column in a Flex DataGrid and uses a custom item renderer to color the text red in a cell if a price is below $0. If the item is greater than $0, the test is displayed in black. The price column is also formatted using a custom label function, which [...]]]></description>
			<content:encoded><![CDATA[<p>The following example formats a column in a Flex DataGrid and uses a custom item renderer to color the text red in a cell if a price is below $0. If the item is greater than $0, the test is displayed in black. The price column is also formatted using a custom label function, which uses a CurrencyFormatter, and finally, the data grid column uses a custom sort function to properly sort numeric columns.</p>
<p>Full code after the jump.</p>
<p><span id="more-107"></span></p>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;">&lt;?xml version=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span>?<span style="color: #7400FF;">&gt;</span></span>
<span style="color: #000000;"><span style="color: #808080; font-style: italic;">&lt;!-- http://blog.flexexamples.com/2007/08/20/formatting-a-flex-datagrid-control-using-a-custom-item-renderer/ --&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Application</span> name=<span style="color: #ff0000;">&quot;DataGridColumn_itemRenderer_test &quot;</span></span>
<span style="color: #000000;">        xmlns:mx=<span style="color: #ff0000;">&quot;http://www.adobe.com/2006/mxml&quot;</span></span>
<span style="color: #000000;">        layout=<span style="color: #ff0000;">&quot;vertical&quot;</span></span>
<span style="color: #000000;">        verticalAlign=<span style="color: #ff0000;">&quot;middle&quot;</span></span>
<span style="color: #000000;">        backgroundColor=<span style="color: #ff0000;">&quot;white&quot;</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
    <span style="color: #339933;">&lt;mx:Script&gt;</span>
<span style="color: #339933;">        &lt;![CDATA[</span>
<span style="color: #339933;">            import mx.controls.dataGridClasses.DataGridColumn;</span>
<span style="color: #339933;">            import mx.utils.ObjectUtil;</span>
&nbsp;
<span style="color: #339933;">            private function price_labelFunc(item:Object, column:DataGridColumn):String {</span>
<span style="color: #339933;">                return currencyFormatter.format(item.@price);</span>
<span style="color: #339933;">            }</span>
&nbsp;
<span style="color: #339933;">            private function price_sortCompareFunc(itemA:Object, itemB:Object):int {</span>
<span style="color: #339933;">                return ObjectUtil.numericCompare(itemA.@price, itemB.@price);</span>
<span style="color: #339933;">            }</span>
<span style="color: #339933;">        ]]&gt;</span>
<span style="color: #339933;">    &lt;/mx:Script&gt;</span>
&nbsp;
    <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:XML</span> id=<span style="color: #ff0000;">&quot;itemsXML&quot;</span><span style="color: #7400FF;">&gt;</span></span>
        <span style="color: #000000;">&lt;items<span style="color: #7400FF;">&gt;</span></span>
            <span style="color: #000000;">&lt;item name=<span style="color: #ff0000;">&quot;Item 1&quot;</span> price=<span style="color: #ff0000;">&quot;1.32&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
            <span style="color: #000000;">&lt;item name=<span style="color: #ff0000;">&quot;Item 2&quot;</span> price=<span style="color: #ff0000;">&quot;-12.23&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
            <span style="color: #000000;">&lt;item name=<span style="color: #ff0000;">&quot;Item 3&quot;</span> price=<span style="color: #ff0000;">&quot;4.96&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
            <span style="color: #000000;">&lt;item name=<span style="color: #ff0000;">&quot;Item 4&quot;</span> price=<span style="color: #ff0000;">&quot;-0.94&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
        <span style="color: #000000;">&lt;/items<span style="color: #7400FF;">&gt;</span></span>
    <span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:XML</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
    <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Style</span><span style="color: #7400FF;">&gt;</span></span>
        .centered {
            text-align: center;
        }
    <span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:Style</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
    <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:CurrencyFormatter</span> id=<span style="color: #ff0000;">&quot;currencyFormatter&quot;</span></span>
<span style="color: #000000;">            precision=<span style="color: #ff0000;">&quot;2&quot;</span></span>
<span style="color: #000000;">            useNegativeSign=<span style="color: #ff0000;">&quot;false&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
&nbsp;
    <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:DataGrid</span> id=<span style="color: #ff0000;">&quot;dataGrid&quot;</span> dataProvider=<span style="color: #ff0000;">&quot;{itemsXML.item}&quot;</span><span style="color: #7400FF;">&gt;</span></span>
        <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:columns</span><span style="color: #7400FF;">&gt;</span></span>
            <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:DataGridColumn</span> dataField=<span style="color: #ff0000;">&quot;@name&quot;</span></span>
<span style="color: #000000;">                    headerText=<span style="color: #ff0000;">&quot;Name:&quot;</span></span>
<span style="color: #000000;">                    headerStyleName=<span style="color: #ff0000;">&quot;centered&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
&nbsp;
            <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:DataGridColumn</span> dataField=<span style="color: #ff0000;">&quot;@price&quot;</span></span>
<span style="color: #000000;">                    headerText=<span style="color: #ff0000;">&quot;Price:&quot;</span></span>
<span style="color: #000000;">                    textAlign=<span style="color: #ff0000;">&quot;right&quot;</span></span>
<span style="color: #000000;">                    headerStyleName=<span style="color: #ff0000;">&quot;centered&quot;</span></span>
<span style="color: #000000;">                    labelFunction=<span style="color: #ff0000;">&quot;price_labelFunc&quot;</span></span>
<span style="color: #000000;">                    sortCompareFunction=<span style="color: #ff0000;">&quot;price_sortCompareFunc&quot;</span></span>
<span style="color: #000000;">                    itemRenderer=<span style="color: #ff0000;">&quot;PriceLabel&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
        <span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:columns</span><span style="color: #7400FF;">&gt;</span></span>
    <span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:DataGrid</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:Application</span><span style="color: #7400FF;">&gt;</span></span></pre></div></div>

<p>And the custom item renderer, <em>PriceLabel.as</em>, is as follows:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #3f5fbf;">/** http://blog.flexexamples.com/2007/08/20/formatting-a-flex-datagrid-control-using-a-custom-item-renderer/ */</span>
<span style="color: #9900cc; font-weight: bold;">package</span> <span style="color: #000000;">&#123;</span>
    <span style="color: #0033ff; font-weight: bold;">import</span> mx<span style="color: #000066; font-weight: bold;">.</span>controls<span style="color: #000066; font-weight: bold;">.</span>Label<span style="color: #000066; font-weight: bold;">;</span>
    <span style="color: #0033ff; font-weight: bold;">import</span> mx<span style="color: #000066; font-weight: bold;">.</span>controls<span style="color: #000066; font-weight: bold;">.</span>listClasses<span style="color: #000066; font-weight: bold;">.*;</span>
&nbsp;
    <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> PriceLabel <span style="color: #0033ff; font-weight: bold;">extends</span> Label <span style="color: #000000;">&#123;</span>
&nbsp;
        <span style="color: #0033ff; font-weight: bold;">private</span> const POSITIVE_COLOR<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">uint</span> = 0x000000<span style="color: #000066; font-weight: bold;">;</span> <span style="color: #009900; font-style: italic;">// Black</span>
        <span style="color: #0033ff; font-weight: bold;">private</span> const NEGATIVE_COLOR<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">uint</span> = 0xFF0000<span style="color: #000066; font-weight: bold;">;</span> <span style="color: #009900; font-style: italic;">// Red</span>
&nbsp;
        override <span style="color: #0033ff; font-weight: bold;">protected</span> <span style="color: #339966; font-weight: bold;">function</span> updateDisplayList<span style="color: #000000;">&#40;</span>unscaledWidth<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span><span style="color: #000066; font-weight: bold;">,</span> unscaledHeight<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
            <span style="color: #0033ff; font-weight: bold;">super</span><span style="color: #000066; font-weight: bold;">.</span>updateDisplayList<span style="color: #000000;">&#40;</span>unscaledWidth<span style="color: #000066; font-weight: bold;">,</span> unscaledHeight<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
            <span style="color: #009966; font-style: italic;">/* Set the font color based on the item price. */</span>
            <span style="color: #004993;">setStyle</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;color&quot;</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000;">&#40;</span><span style="color: #004993;">parseFloat</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">data</span><span style="color: #000066; font-weight: bold;">.</span>@price<span style="color: #000000;">&#41;</span> <span style="color: #000066; font-weight: bold;">&lt;</span>= <span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#41;</span> <span style="color: #000066; font-weight: bold;">?</span> NEGATIVE_COLOR <span style="color: #000066; font-weight: bold;">:</span> POSITIVE_COLOR<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
        <span style="color: #000000;">&#125;</span>
    <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p class="information"><a href="http://blog.flexexamples.com/wp-content/uploads/DataGridColumn_itemRenderer_test/bin/srcview/index.html">View source</a> is enabled in the following example.</p>
<p><iframe src="http://blog.flexexamples.com/wp-content/uploads/DataGridColumn_itemRenderer_test/bin/main.html" width="100%" height="220"></iframe></p>
<div class="evernoteSiteMemory"><a href="javascript:" onclick="Evernote.doClip({title: 'Formatting a Flex DataGrid control using a custom item renderer on FlexExamples.com',url: 'http://blog.flexexamples.com/2007/08/20/formatting-a-flex-datagrid-control-using-a-custom-item-renderer/',contentID: 'post-107',code: 'Pete9667',suggestNotebook: 'FlexExamples',suggestTags: 'itemRenderer,sortCompareFunction',providerName: 'FlexExamples.com',styling: 'text' });return false" class="evernoteSiteMemoryLink"><img src="http://static.evernote.com/article-clipper-remember.png" class="evernoteSiteMemoryButton" />
				</a>				<div class="evernoteSiteMemoryClear">&nbsp;</div>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.flexexamples.com/2007/08/20/formatting-a-flex-datagrid-control-using-a-custom-item-renderer/feed/</wfw:commentRss>
		<slash:comments>48</slash:comments>
		</item>
		<item>
		<title>Sorting date columns in a DataGrid</title>
		<link>http://blog.flexexamples.com/2007/08/12/sorting-date-columns-in-a-datagrid/</link>
		<comments>http://blog.flexexamples.com/2007/08/12/sorting-date-columns-in-a-datagrid/#comments</comments>
		<pubDate>Sun, 12 Aug 2007 15:51:01 +0000</pubDate>
		<dc:creator>Peter deHaan</dc:creator>
				<category><![CDATA[DataGrid]]></category>
		<category><![CDATA[ObjectUtil]]></category>
		<category><![CDATA[dataTipFunction]]></category>
		<category><![CDATA[dateCompare()]]></category>
		<category><![CDATA[showDataTips]]></category>
		<category><![CDATA[sortCompareFunction]]></category>

		<guid isPermaLink="false">http://blog.flexexamples.com/2007/08/12/sorting-date-columns-in-a-datagrid/</guid>
		<description><![CDATA[<p>Here&#8217;s an example of sorting a column of dates in a Flex DataGrid. The dates start out as Strings (such as &#8220;04/14/1980&#8243;) so you create a custom sortCompareFunction on that DataGrid column which converts the strings to dates so Flex will sort the dates in sequential order (as oppsed to string order). Hope that helps [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s an example of sorting a column of dates in a Flex DataGrid. The dates start out as Strings (such as &#8220;04/14/1980&#8243;) so you create a custom <code>sortCompareFunction</code> on that DataGrid column which converts the strings to dates so Flex will sort the dates in sequential order (as oppsed to string order). Hope that helps somebody out there.</p>
<p>I also created a little tooltip on the date column which shows the dates in a somewhat more readable form (&#8220;April 14 1980&#8243;) using the DataGridColumn object&#8217;s <code>showDataTips</code> and <code>dataTipFunction</code> properties.</p>
<p>Full code after the jump.</p>
<p><span id="more-81"></span></p>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;">&lt;?xml version=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span>?<span style="color: #7400FF;">&gt;</span></span>
<span style="color: #000000;"><span style="color: #808080; font-style: italic;">&lt;!-- http://blog.flexexamples.com/2007/08/12/sorting-date-columns-in-a-datagrid/ --&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Application</span> xmlns:mx=<span style="color: #ff0000;">&quot;http://www.adobe.com/2006/mxml&quot;</span></span>
<span style="color: #000000;">        layout=<span style="color: #ff0000;">&quot;vertical&quot;</span></span>
<span style="color: #000000;">        verticalAlign=<span style="color: #ff0000;">&quot;middle&quot;</span></span>
<span style="color: #000000;">        backgroundColor=<span style="color: #ff0000;">&quot;white&quot;</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
    <span style="color: #339933;">&lt;mx:Script&gt;</span>
<span style="color: #339933;">        &lt;![CDATA[</span>
<span style="color: #339933;">            import mx.utils.ObjectUtil;</span>
&nbsp;
<span style="color: #339933;">            private function date_sortCompareFunc(itemA:Object, itemB:Object):int {</span>
<span style="color: #339933;">                /* Date.parse() returns an int, but</span>
<span style="color: #339933;">                   ObjectUtil.dateCompare() expects two</span>
<span style="color: #339933;">                   Date objects, so convert String to</span>
<span style="color: #339933;">                   int to Date. */</span>
<span style="color: #339933;">                var dateA:Date = new Date(Date.parse(itemA.dob));</span>
<span style="color: #339933;">                var dateB:Date = new Date(Date.parse(itemB.dob));</span>
<span style="color: #339933;">                return ObjectUtil.dateCompare(dateA, dateB);</span>
<span style="color: #339933;">            }</span>
&nbsp;
<span style="color: #339933;">            private function date_dataTipFunc(item:Object):String {</span>
<span style="color: #339933;">                return dateFormatter.format(item.dob);</span>
<span style="color: #339933;">            }</span>
<span style="color: #339933;">        ]]&gt;</span>
<span style="color: #339933;">    &lt;/mx:Script&gt;</span>
&nbsp;
    <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:ArrayCollection</span> id=<span style="color: #ff0000;">&quot;arrColl&quot;</span><span style="color: #7400FF;">&gt;</span></span>
        <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:source</span><span style="color: #7400FF;">&gt;</span></span>
            <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Array</span><span style="color: #7400FF;">&gt;</span></span>
                <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Object</span> name=<span style="color: #ff0000;">&quot;User A&quot;</span> dob=<span style="color: #ff0000;">&quot;04/14/1980&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
                <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Object</span> name=<span style="color: #ff0000;">&quot;User B&quot;</span> dob=<span style="color: #ff0000;">&quot;01/02/1975&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
                <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Object</span> name=<span style="color: #ff0000;">&quot;User C&quot;</span> dob=<span style="color: #ff0000;">&quot;12/30/1977&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
                <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Object</span> name=<span style="color: #ff0000;">&quot;User D&quot;</span> dob=<span style="color: #ff0000;">&quot;10/27/1968&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
            <span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:Array</span><span style="color: #7400FF;">&gt;</span></span>
        <span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:source</span><span style="color: #7400FF;">&gt;</span></span>
    <span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:ArrayCollection</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
    <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:DateFormatter</span> id=<span style="color: #ff0000;">&quot;dateFormatter&quot;</span> formatString=<span style="color: #ff0000;">&quot;MMMM D, YYYY&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
&nbsp;
    <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:DataGrid</span> id=<span style="color: #ff0000;">&quot;dataGrid&quot;</span> dataProvider=<span style="color: #ff0000;">&quot;{arrColl}&quot;</span><span style="color: #7400FF;">&gt;</span></span>
        <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:columns</span><span style="color: #7400FF;">&gt;</span></span>
            <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:DataGridColumn</span> dataField=<span style="color: #ff0000;">&quot;name&quot;</span></span>
<span style="color: #000000;">                    headerText=<span style="color: #ff0000;">&quot;Name:&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
&nbsp;
            <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:DataGridColumn</span> dataField=<span style="color: #ff0000;">&quot;dob&quot;</span></span>
<span style="color: #000000;">                    headerText=<span style="color: #ff0000;">&quot;Date of birth:&quot;</span></span>
<span style="color: #000000;">                    sortCompareFunction=<span style="color: #ff0000;">&quot;date_sortCompareFunc&quot;</span></span>
<span style="color: #000000;">                    showDataTips=<span style="color: #ff0000;">&quot;true&quot;</span></span>
<span style="color: #000000;">                    dataTipFunction=<span style="color: #ff0000;">&quot;date_dataTipFunc&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
        <span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:columns</span><span style="color: #7400FF;">&gt;</span></span>
    <span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:DataGrid</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:Application</span><span style="color: #7400FF;">&gt;</span></span></pre></div></div>

<p class="information"><a href="http://blog.flexexamples.com/wp-content/uploads/DataGrid_date_sort_test/bin/srcview/index.html">View source</a> is enabled in the following example.</p>
<p><iframe src="http://blog.flexexamples.com/wp-content/uploads/DataGrid_date_sort_test/bin/main.html" width="100%" height="220"></iframe></p>
<div class="evernoteSiteMemory"><a href="javascript:" onclick="Evernote.doClip({title: 'Sorting date columns in a DataGrid on FlexExamples.com',url: 'http://blog.flexexamples.com/2007/08/12/sorting-date-columns-in-a-datagrid/',contentID: 'post-81',code: 'Pete9667',suggestNotebook: 'FlexExamples',suggestTags: 'dataTipFunction,dateCompare(),showDataTips,sortCompareFunction',providerName: 'FlexExamples.com',styling: 'text' });return false" class="evernoteSiteMemoryLink"><img src="http://static.evernote.com/article-clipper-remember.png" class="evernoteSiteMemoryButton" />
				</a>				<div class="evernoteSiteMemoryClear">&nbsp;</div>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.flexexamples.com/2007/08/12/sorting-date-columns-in-a-datagrid/feed/</wfw:commentRss>
		<slash:comments>38</slash:comments>
		</item>
		<item>
		<title>Loading XML at run-time using the mx:HTTPService tag</title>
		<link>http://blog.flexexamples.com/2007/07/27/loading-xml-at-run-time-using-the-mxhttpservice-tag/</link>
		<comments>http://blog.flexexamples.com/2007/07/27/loading-xml-at-run-time-using-the-mxhttpservice-tag/#comments</comments>
		<pubDate>Fri, 27 Jul 2007 14:10:28 +0000</pubDate>
		<dc:creator>Peter deHaan</dc:creator>
				<category><![CDATA[DataGrid]]></category>
		<category><![CDATA[HTTPService]]></category>
		<category><![CDATA[mx:HTTPService]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[HTTPService.send()]]></category>
		<category><![CDATA[labelFunction]]></category>
		<category><![CDATA[sortCompareFunction]]></category>

		<guid isPermaLink="false">http://blog.flexexamples.com/2007/07/27/loading-xml-at-run-time-using-the-mxhttpservice-tag/</guid>
		<description><![CDATA[<p>In the previous post we looked at how to load an XML document in at compile-time and have it embedded in our Flex application. But that technique really only works if the XML data in question never changes. What if you had an XML document that was constantly changing on a daily, or hourly, basis. [...]]]></description>
			<content:encoded><![CDATA[<p>In the previous post we looked at how to load an XML document in at compile-time and have it embedded in our Flex application. But that technique really only works if the XML data in question never changes. What if you had an XML document that was constantly changing on a daily, or hourly, basis. For example, consider an RSS reader application. If the XML was loaded and embedded in the XML document at compile-time, the RSS would never get updated. And while that may be good in some cases (such as a kiosk, or somewhere without an internet connection where you wanted to display static information), in many cases it may not work.</p>
<p>So, lets take a look at using the mx:HTTPService tag to dynamically load an XML file.</p>
<p><span id="more-33"></span></p>
<p>The following example dynamically loads an XML file at run-time using the mx:HTTPService tag, rather than using mx:XML and grabbing the data at compile-time:</p>
<p class="download"><a href="http://blog.flexexamples.com/wp-content/uploads/HTTPService_resultFormat_test_2/bin/srcview/source/main.mxml.html">View MXML</a></p>
<pre class="code">
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;!-- http://blog.flexexamples.com/2007/07/27/loading-xml-at-run-time-using-the-mxhttpservice-tag/ --&gt;
&lt;mx:Application name="HTTPService_resultFormat_test_2"
        xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="top"
        backgroundColor="white"
        creationComplete="tempXML.send();"&gt;

    &lt;mx:HTTPService id="tempXML"
            url="xml/cuePoints.xml"
            resultFormat="e4x" /&gt;
    &lt;mx:XMLListCollection id="cuePointXMLList"
            source="{tempXML.lastResult.CuePoint}" /&gt;
    &lt;mx:XMLListCollection id="parametersXMLList"
            source="{dataGrid.selectedItem.Parameters.Parameter}" /&gt;

    &lt;mx:Script&gt;
        &lt;![CDATA[
            private function parametersLabelFunction(item:Object, column:DataGridColumn):String {
                return item.Parameters.Parameter.length();
            }

            private function numericSortCompareFunction(objA:Object, objB:Object):int {
                var itemA:Number = parseInt(objA.Time.text()) as Number;
                var itemB:Number = parseInt(objB.Time.text()) as Number;

                if (itemA &gt; itemB) {
                    return 1;
                } else if (itemA &lt; itemB) {
                    return -1;
                } else {
                    return 0;
                }
            }
        ]]&gt;
    &lt;/mx:Script&gt;

    &lt;mx:VBox&gt;

        &lt;mx:DataGrid id="dataGrid"
                dataProvider="{cuePointXMLList}"
                width="100%"
                rowCount="{cuePointXMLList.length + 1}"&gt;
            &lt;mx:columns&gt;
                &lt;mx:DataGridColumn id="timeCol"
                        dataField="Time"
                        headerText="Time (ms):"
                        sortCompareFunction="numericSortCompareFunction" /&gt;
                &lt;mx:DataGridColumn id="typeCol"
                        dataField="Type"
                        headerText="Type:" /&gt;
                &lt;mx:DataGridColumn id="nameCol"
                        dataField="Name"
                        headerText="Name:" /&gt;
                &lt;mx:DataGridColumn id="parametersCol"
                        dataField="Parameters"
                        headerText="Parameters:"
                        labelFunction="parametersLabelFunction" /&gt;
            &lt;/mx:columns&gt;
        &lt;/mx:DataGrid&gt;

        &lt;mx:DataGrid id="parametersDataGrid"
                dataProvider="{parametersXMLList}"
                width="100%"
                visible="{parametersXMLList.length &gt; 0}"
                rowCount="{parametersXMLList.length + 1}"&gt;
            &lt;mx:columns&gt;
                &lt;mx:DataGridColumn id="parameterNameCol"
                        dataField="Name"
                        headerText="Parameter Name:" /&gt;
                &lt;mx:DataGridColumn id="parameterValueCol"
                        dataField="Value"
                        headerText="Parameter Value:" /&gt;
            &lt;/mx:columns&gt;
        &lt;/mx:DataGrid&gt;
    &lt;/mx:VBox&gt;

&lt;/mx:Application&gt;
</pre>
<p class="download"><a href="http://blog.flexexamples.com/wp-content/uploads/HTTPService_resultFormat_test_2/bin/srcview/source/xml/cuePoints.xml.txt">xml/cuePoints.xml</a></p>
<pre class="code">
&lt;?xml version="1.0" encoding="UTF-8" standalone="no" ?&gt;
&lt;!-- http://blog.flexexamples.com/2007/07/27/loading-xml-at-run-time-using-the-mxhttpservice-tag/ --&gt;
&lt;FLVCoreCuePoints version="1"&gt;

    &lt;CuePoint&gt;
        &lt;Time&gt;0&lt;/Time&gt;
        &lt;Type&gt;event&lt;/Type&gt;
        &lt;Name&gt;slide1&lt;/Name&gt;
        &lt;Parameters&gt;
            &lt;Parameter&gt;
                &lt;Name&gt;id&lt;/Name&gt;
                &lt;Value&gt;value&lt;/Value&gt;
            &lt;/Parameter&gt;
        &lt;/Parameters&gt;
    &lt;/CuePoint&gt;

    &lt;CuePoint&gt;
        &lt;Time&gt;5000&lt;/Time&gt;
        &lt;Type&gt;event&lt;/Type&gt;
        &lt;Name&gt;slide2&lt;/Name&gt;
        &lt;Parameters&gt;
            &lt;Parameter&gt;
                &lt;Name&gt;param1&lt;/Name&gt;
                &lt;Value&gt;value1&lt;/Value&gt;
            &lt;/Parameter&gt;
            &lt;Parameter&gt;
                &lt;Name&gt;param2&lt;/Name&gt;
                &lt;Value&gt;value2&lt;/Value&gt;
            &lt;/Parameter&gt;
        &lt;/Parameters&gt;
    &lt;/CuePoint&gt;

    &lt;CuePoint&gt;
        &lt;Time&gt;20000&lt;/Time&gt;
        &lt;Type&gt;event&lt;/Type&gt;
        &lt;Name&gt;slide3&lt;/Name&gt;
    &lt;/CuePoint&gt;

&lt;/FLVCoreCuePoints&gt;
</pre>
<p class="information"><a href="http://blog.flexexamples.com/wp-content/uploads/HTTPService_resultFormat_test_2/bin/srcview/index.html">View source</a> is enabled in the following example.</p>
<p><iframe src="http://blog.flexexamples.com/wp-content/uploads/HTTPService_resultFormat_test_2/bin/main.html" width="100%" height="300"></iframe></p>
<p>The first thing you notice is that the code is nearly identical to the previous example which used mx:XML. The subtle differences are that instead of mx:XML we used mx:HTTPService to get the data. Also, we now listen for the <code>creationComplete</code> event for on the Application tag where we trigger the XML loading using the <code>HTTPService.send()</code> method. Finally, the locations of the files changed slightly. Now instead of the XML being calculated relative to the MXML file, the XML gets placed relative to the generated SWF file. All the other code stayed the same.</p>
<p class="note">In case you&#8217;re curious, the sample XML document in question comes from a Quick Start I wrote for the Flash CS3 release, &#8220;<a target="_blank" href="http://www.adobe.com/devnet/flash/quickstart/video_encoder/" title="Adobe Flash Developer Center: Using the Adobe Flash CS3 Video Encoder">Flash Quick Starts: Using the Adobe Flash CS3 Video Encoder</a>&#8220;.</p>
<div class="evernoteSiteMemory"><a href="javascript:" onclick="Evernote.doClip({title: 'Loading XML at run-time using the mx:HTTPService tag on FlexExamples.com',url: 'http://blog.flexexamples.com/2007/07/27/loading-xml-at-run-time-using-the-mxhttpservice-tag/',contentID: 'post-33',code: 'Pete9667',suggestNotebook: 'FlexExamples',suggestTags: 'HTTPService.send(),labelFunction,sortCompareFunction',providerName: 'FlexExamples.com',styling: 'text' });return false" class="evernoteSiteMemoryLink"><img src="http://static.evernote.com/article-clipper-remember.png" class="evernoteSiteMemoryButton" />
				</a>				<div class="evernoteSiteMemoryClear">&nbsp;</div>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.flexexamples.com/2007/07/27/loading-xml-at-run-time-using-the-mxhttpservice-tag/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Displaying XML data in a DataGrid</title>
		<link>http://blog.flexexamples.com/2007/07/26/displaying-xml-data-in-a-datagrid/</link>
		<comments>http://blog.flexexamples.com/2007/07/26/displaying-xml-data-in-a-datagrid/#comments</comments>
		<pubDate>Fri, 27 Jul 2007 06:44:15 +0000</pubDate>
		<dc:creator>Peter deHaan</dc:creator>
				<category><![CDATA[DataGrid]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[XMLListCollection]]></category>
		<category><![CDATA[labelFunction]]></category>
		<category><![CDATA[sortCompareFunction]]></category>

		<guid isPermaLink="false">http://blog.flexexamples.com/2007/07/26/displaying-xml-data-in-a-datagrid/</guid>
		<description><![CDATA[<p>OK, hopefully this example is a bit more interesting than a few of my previous ones. Today&#8217;s handy tip comes in the form of loading and embedding an XML file in our Flex application at compile-time (as opposed to dynamically loading at run-time, which we&#8217;ll save for a future example), and displaying that information in [...]]]></description>
			<content:encoded><![CDATA[<p>OK, hopefully this example is a bit more interesting than a few of my previous ones. Today&#8217;s handy tip comes in the form of loading and embedding an XML file in our Flex application at compile-time (as opposed to dynamically loading at run-time, which we&#8217;ll save for a future example), and displaying that information in a DataGrid control.</p>
<p><span id="more-32"></span></p>
<p>The following example loads an XML file at compile-time using the mx:XML and displays the information in a DataGrid:</p>
<p class="download"><a href="http://blog.flexexamples.com/wp-content/uploads/DataGrid_dataProvider_XML_test/cuePoints.xml">View cuePoints.xml</a></p>
<pre class="code">
&lt;?xml version="1.0" encoding="UTF-8" standalone="no" ?&gt;
&lt;FLVCoreCuePoints version="1"&gt;

    &lt;CuePoint&gt;
        &lt;Time&gt;0&lt;/Time&gt;
        &lt;Type&gt;event&lt;/Type&gt;
        &lt;Name&gt;slide1&lt;/Name&gt;
        &lt;Parameters&gt;
            &lt;Parameter&gt;
                &lt;Name&gt;id&lt;/Name&gt;
                &lt;Value&gt;value&lt;/Value&gt;
            &lt;/Parameter&gt;
        &lt;/Parameters&gt;
    &lt;/CuePoint&gt;

    &lt;CuePoint&gt;
        &lt;Time&gt;5000&lt;/Time&gt;
        &lt;Type&gt;event&lt;/Type&gt;
        &lt;Name&gt;slide2&lt;/Name&gt;
        &lt;Parameters&gt;
            &lt;Parameter&gt;
                &lt;Name&gt;param1&lt;/Name&gt;
                &lt;Value&gt;value1&lt;/Value&gt;
            &lt;/Parameter&gt;
            &lt;Parameter&gt;
                &lt;Name&gt;param2&lt;/Name&gt;
                &lt;Value&gt;value2&lt;/Value&gt;
            &lt;/Parameter&gt;
        &lt;/Parameters&gt;
    &lt;/CuePoint&gt;

    &lt;CuePoint&gt;
        &lt;Time&gt;20000&lt;/Time&gt;
        &lt;Type&gt;event&lt;/Type&gt;
        &lt;Name&gt;slide3&lt;/Name&gt;
    &lt;/CuePoint&gt;

&lt;/FLVCoreCuePoints&gt;</pre>
<p class="download"><a href="http://blog.flexexamples.com/wp-content/uploads/DataGrid_dataProvider_XML_test/main.mxml">View MXML</a></p>
<pre class="code">
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;!-- http://blog.flexexamples.com/2007/07/26/displaying-xml-data-in-a-datagrid/ --&gt;
&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="top"
        backgroundColor="white"&gt;

    &lt;mx:XML id="tempXML"
            source="assets/cuePoints.xml" /&gt;

    &lt;mx:XMLListCollection id="cuePointXMLList"
            source="{tempXML.CuePoint}" /&gt;
    &lt;mx:XMLListCollection id="parametersXMLList"
            source="{dataGrid.selectedItem.Parameters.Parameter}" /&gt;

    &lt;mx:Script&gt;
        &lt;![CDATA[
            private function parametersLabelFunction(item:Object, column:DataGridColumn):String {
                return item.Parameters.Parameter.length();
            }

            private function numericSortCompareFunction(objA:Object, objB:Object):int {
                var itemA:Number = parseInt(objA.Time.text()) as Number;
                var itemB:Number = parseInt(objB.Time.text()) as Number;

                if (itemA &gt; itemB) {
                    return 1;
                } else if (itemA &lt; itemB) {
                    return -1;
                } else {
                    return 0;
                }
            }
        ]]&gt;
    &lt;/mx:Script&gt;

    &lt;mx:VBox&gt;
        &lt;mx:DataGrid id="dataGrid"
                dataProvider="{cuePointXMLList}"
                width="100%"
                rowCount="{cuePointXMLList.length + 1}"&gt;
            &lt;mx:columns&gt;
                &lt;mx:DataGridColumn id="timeCol"
                        dataField="Time"
                        headerText="Time (ms):"
                        sortCompareFunction="numericSortCompareFunction" /&gt;
                &lt;mx:DataGridColumn id="typeCol"
                        dataField="Type"
                        headerText="Type:" /&gt;
                &lt;mx:DataGridColumn id="nameCol"
                        dataField="Name"
                        headerText="Name:" /&gt;
                &lt;mx:DataGridColumn id="parametersCol"
                        dataField="Parameters"
                        headerText="Parameters:"
                        labelFunction="parametersLabelFunction" /&gt;
            &lt;/mx:columns&gt;
        &lt;/mx:DataGrid&gt;

        &lt;mx:DataGrid id="parametersDataGrid"
                dataProvider="{parametersXMLList}"
                width="100%"
                visible="{parametersXMLList.length &gt; 0}"
                rowCount="{parametersXMLList.length + 1}"&gt;
            &lt;mx:columns&gt;
                &lt;mx:DataGridColumn id="parameterNameCol"
                        dataField="Name"
                        headerText="Parameter Name:" /&gt;
                &lt;mx:DataGridColumn id="parameterValueCol"
                        dataField="Value"
                        headerText="Parameter Value:" /&gt;
            &lt;/mx:columns&gt;
        &lt;/mx:DataGrid&gt;
    &lt;/mx:VBox&gt;

&lt;/mx:Application&gt;
</pre>
<p class="information"><a href="http://blog.flexexamples.com/wp-content/uploads/DataGrid_dataProvider_XML_test/bin/srcview/index.html">View source</a> is enabled in the following example.</p>
<p><iframe src="http://blog.flexexamples.com/wp-content/uploads/DataGrid_dataProvider_XML_test/bin/main.html" width="100%" height="300"></iframe></p>
<p class="note">In case you&#8217;re curious, the sample XML document in question comes from a Quick Start I wrote for the Flash CS3 release, &#8220;<a target="_blank" href="http://www.adobe.com/devnet/flash/quickstart/video_encoder/" title="Adobe Flash Developer Center: Using the Adobe Flash CS3 Video Encoder">Flash Quick Starts: Using the Adobe Flash CS3 Video Encoder</a>&#8220;.</p>
<div class="evernoteSiteMemory"><a href="javascript:" onclick="Evernote.doClip({title: 'Displaying XML data in a DataGrid on FlexExamples.com',url: 'http://blog.flexexamples.com/2007/07/26/displaying-xml-data-in-a-datagrid/',contentID: 'post-32',code: 'Pete9667',suggestNotebook: 'FlexExamples',suggestTags: 'labelFunction,sortCompareFunction',providerName: 'FlexExamples.com',styling: 'text' });return false" class="evernoteSiteMemoryLink"><img src="http://static.evernote.com/article-clipper-remember.png" class="evernoteSiteMemoryButton" />
				</a>				<div class="evernoteSiteMemoryClear">&nbsp;</div>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.flexexamples.com/2007/07/26/displaying-xml-data-in-a-datagrid/feed/</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
	</channel>
</rss>

