Flex表格数据重新加载,仍然保留原来的列头排序
Flex的表格DataGrid具有排序功能,只要点击表头就可以进行排序。但有时我们重新加载表格的数据的时候(比如表格需要定时刷新),会发现原来选择的排序消失,而是数据原始的顺序。
要保持数据加载后仍保持原来的排序,可参考如下代码:
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Script> <![CDATA[ import mx.collections.ICollectionView; import mx.collections.Sort; private var d:XML = <data> <item value1="1" value2="a"/> <item value1="2" value2="b"/> <item value1="3" value2="c"/> <item value1="4" value2="d"/> <item value1="5" value2="e"/> </data> protected function button1_clickHandler(event:MouseEvent):void { //var s:Sort = dg.dataProvider.sort; var view:ICollectionView = ICollectionView(dg.dataProvider); var s:Sort; if(view != null){ s = view.sort; } dg.dataProvider = d.children(); if(view != null){ view = ICollectionView(dg.dataProvider); view.sort = s; view.refresh(); } } ]]> </mx:Script> <mx:DataGrid x="38" y="22" id="dg"> <mx:columns> <mx:DataGridColumn dataField="@value1" headerText="列 1"/> <mx:DataGridColumn dataField="@value2" headerText="列 2"/> <mx:DataGridColumn dataField="col3" headerText="列 3"/> </mx:columns> </mx:DataGrid> <mx:Button x="38" y="195" label="按钮" click="button1_clickHandler(event)"/> </mx:Application>