Search Flex Samples

Performing case [in]sensitive sorts using the DataGrid control in Flex

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.






<?xml version="1.0" encoding="utf-8"?>


<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"

layout="vertical"

verticalAlign="middle"

backgroundColor="white">



<mx:Script>

<![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);

}

]]>

</mx:Script>



<mx:ArrayCollection id="arrColl">

<mx:source>

<mx:Array>

<mx:Object index="1" value="apple" />

<mx:Object index="200" value="Bear" />

<mx:Object index="3" value="corn" />

<mx:Object index="40" value="Dragon" />

<mx:Object value="eggplant" />

<mx:Object index="5" />

</mx:Array>

</mx:source>

</mx:ArrayCollection>



<mx:ApplicationControlBar dock="true">

<mx:CheckBox id="checkBox"

label="case insensitive search:"

labelPlacement="left"

selected="true" />

</mx:ApplicationControlBar>



<mx:DataGrid id="dataGrid" dataProvider="{arrColl}">

<mx:columns>

<mx:DataGridColumn dataField="index"

sortCompareFunction="index_sortCompareFunc" />

<mx:DataGridColumn dataField="value"

sortCompareFunction="value_sortCompareFunc" />

</mx:columns>

</mx:DataGrid>


</mx:Application>




0 comments:

Related Flex Samples

Learn Flex: Flex Samples | Flex Video Tutorials Flex Examples