private function useNumericSort(columns:Array, dg:DataGrid) { dg.addEventListener(“headerRelease”, function (evt:Object) { var dataGrid = evt.target; var data = dataGrid.dataProvider; var column = evt.columnIndex; var columnName = dataGrid.columnNames[column]; var direction = evt.sortDirection.toUpperCase(); var sortOptions = 0; var useNumeric:Boolean = false; for (var index in columns) { if (columns[index] == column) { useNumeric = true; break; } } if (useNumeric) { data.sort(function(recordA, recordB) { var a:Number = Number(recordA[columnName]); var b:Number = Number(recordB[columnName]); if (isNaN(a)) { a = 0; } if (isNaN(b)) { b = 0; } return (direction == ‘DESC’) ? (b-a) : (a-b); }, sortOptions); } else { sortOptions |= (direction == ‘DESC’) ? 2 : 0; sortOptions |= 1; // case-insentitive data.sortOn(columnName, sortOptions); } }); } (usage example: specify columns 0, 3, and 4 in order_dg as to be sorted numerically.) useNumericSort([0,3,4], order_dg);