当前位置: > > > Flex表格数据重新加载,仍然保留原来的列头排序

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>
评论0