The first reference [1] never made much sense to me. It sounds like it's allow the headerInfo.internalLabelFunction to override the sorting ability which is just weird. Especially since the sort.fields array holds all the sortfields. Label functions != sort compare functions.
[1] var headerInfo:AdvancedDataGridHeaderInfo = getHeaderInfo(column); if(headerInfo && headerInfo.internalLabelFunction != null && column.sortCompareFunction == null) return; The second reference [2] is correct. It is just copying the a custom compare function if one is present on the column itself. The custom compare functions override the default behavior of that individual sortfield. [2] if (column.sortCompareFunction != null) field.compareFunction = column.sortCompareFunction; collection.sort.fields.push(field); More detail in general not necessary for the rest of the answer.... Well the other sortfields pretty much use custom compare functions over any internal ones. However the sortfields are not bound/referenced to the columns at all. They add a New sortfield (based off the columns sortfield / datafield) to the sort.fields array. It's pretty much a onetime event minus the fact the asc/desc gets updated. It sorts based on the sort array. So it should be adding a sortfield if that column hasn't added one already. It should only test if a function exists on column.sortCompareFunction if it's going to pass it along to the sortfield when it's adding it (like the second reference is correct). -Mark -----Original Message----- From: Justin Mclean [mailto:jus...@classsoftware.com] Sent: Friday, September 20, 2013 12:17 AM To: dev@flex.apache.org Subject: AdvancedDatGrid sorting oddity HI, Near the top of addSortField we have: if (headerInfo && headerInfo.internalLabelFunction != null && column.sortCompareFunction == null) return; Shouldn't that be column.sortCompareFunction != null? ie if you have a custom sort function don't bother adding a new oridinary sort field? Confusingly at the bottom of the same method: if (column.sortCompareFunction != null) field.compareFunction = column.sortCompareFunction; anyone have any insight? Thanks, Justin