בעייה מעצבנת שקוראת בDataGrid של פלקס. כאשר ממיינים לפי עמודה ולאחר מכן מחליפים את הDataProvider, הסדר לא נשמר. כלומר המיון מתבצע רק בלחיצה על הכותרת אבל לא מתבצע שוב כשהprivder משתנה (מוחלף ליתר דיוק). כדי לעקוף זאת, כתבתי class נחמד שיורש מDataGrid ומטפל בבעייה. להלן הקוד:
package il.co.j2ee.samples { import mx.controls.DataGrid; import mx.events.CollectionEvent; import mx.events.DataGridEvent; import mx.events.FlexEvent; public class SortedDataGrid extends DataGrid { private var lastSortingEvent:DataGridEvent; public function SortedDataGrid() { super(); addEventListener("headerRelease", onHeaderRelease); } public override function set dataProvider(data:Object):void{ super.dataProvider = data; addEventListener(CollectionEvent.COLLECTION_CHANGE, onDataChange); } private function onHeaderRelease(event:DataGridEvent):void{ lastSortingEvent = event; } private function onDataChange(event:CollectionEvent):void{ if (lastSortingEvent){ dispatchEvent(lastSortingEvent); } } } }
כך זה נראה במקור:
וכך לאחר השימוש בSortedDataGrid: