Note that there are some explanatory texts on larger screens.

plurals
  1. POHow do I sort in a Flex AdvancedDataGrid - callback isn't being called
    text
    copied!<p>I have an AdvancedDataGrid that uses customer grouping of data. Not all of the groups will be at the same level in the hierarchy, and groups can contain both groups and members. We have a sort callback, but it's not being called except for groups at the leaf-most levels. See code below for an example -- expand all of the groups, then click the sort column on "date of birth" to get a reverse sort by date of birth. (Oddly, for some unfathomable reason, the first ascending sort works.)</p> <p>We're not getting called for any of the data that's grouped at the same level as a group member.</p> <p>How do I fix this?</p> <p>Thanks.</p> <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&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.controls.advancedDataGridClasses.AdvancedDataGridColumn; import mx.collections.HierarchicalData; import mx.utils.ObjectUtil; private var arrData : Array = [ { name: "User A", dob: "04/14/1980" }, { name: "User B", dob: "01/02/1975" }, { name: "Group A", children: [ { name: "User E", dob: "09/13/1972" }, { name: "User F", dob: "11/22/1993" } ] }, { name: "Group B", children: [ { name: "Group B1", children: [ { name: "User I", dob: "01/23/1984" }, { name: "User J", dob: "11/10/1948" } ] }, { name: "User G", dob: "04/09/1989" }, { name: "User H", dob: "06/20/1963" } ] }, { name: "User C", dob: "12/30/1977" }, { name: "User D", dob: "10/27/1968" } ]; private function date_sortCompareFunc(itemA:Object, itemB:Object):int { if ( itemA.hasOwnProperty("dob") &amp;&amp; itemB.hasOwnProperty("dob")) { var dateA:Date = new Date(Date.parse(itemA.dob)); var dateB:Date = new Date(Date.parse(itemB.dob)); return ObjectUtil.dateCompare(dateA, dateB); } else if ( itemA.hasOwnProperty("dob")) { return 1; } else if (itemB.hasOwnProperty("dob")) { return -1; } return ObjectUtil.stringCompare(itemA.name, itemB.name); } private function date_dataTipFunc(item:Object):String { if (item.hasOwnProperty("dob")) { return dateFormatter.format(item.dob); } return ""; } private function label_dob(item:Object, col:AdvancedDataGridColumn):String { var dob:String=""; if(item.hasOwnProperty("dob")) { dob=item.dob; } return dob; } ]]&gt; &lt;/mx:Script&gt; &lt;mx:DateFormatter id="dateFormatter" formatString="MMMM D, YYYY" /&gt; &lt;mx:AdvancedDataGrid id="adgTest" dataProvider="{new HierarchicalData(this.arrData)}" designViewDataType="tree" width="746" height="400"&gt; &lt;mx:columns&gt; &lt;mx:AdvancedDataGridColumn headerText="Name" dataField="name"/&gt; &lt;mx:AdvancedDataGridColumn dataField="dob" headerText="Date of birth" labelFunction="label_dob" sortCompareFunction="date_sortCompareFunc" showDataTips="true" dataTipFunction="date_dataTipFunc" /&gt; &lt;/mx:columns&gt; &lt;/mx:AdvancedDataGrid&gt; &lt;/mx:Application&gt; </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload