Flex中利用Sort和SortField类以及XMLListCollection.sort属性对XMLListCollection中的数据进行过滤的例子

By Minidxer | August 1, 2008

接下来的例子演示了Flex中如何利用Sort和SortField类以及XMLListCollection.sort属性,对XMLListCollection中的数据进行过滤。

让我们先来看一下Demo可以右键View Source或点击这里察看源代码):


下面是完整实现代码(或点击这里察看):

Download: main.mxml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
  3.         layout="vertical"
  4.         verticalAlign="middle"
  5.         backgroundColor="white"
  6.         creationComplete="init()">
  7.  
  8.     <mx:Script>
  9.         <![CDATA[
  10.             import mx.collections.SortField;
  11.             import mx.collections.Sort;
  12.             import mx.controls.*;
  13.  
  14.             private function init():void {
  15.                 describeTypeXML = describeType(DataGrid);
  16.                 factoryMethodsXLC.source = describeTypeXML.factory.method;
  17.             }
  18.  
  19.             private function sortXLC():void {
  20.                 var nameSort:Sort = new Sort();
  21.                 nameSort.fields = [new SortField('@name', true)];
  22.  
  23.                 factoryMethodsXLC.sort = nameSort;
  24.                 factoryMethodsXLC.refresh();
  25.             }
  26.  
  27.             private function filterXLC():void {
  28.                 if (filterCh.selected) {
  29.                     factoryMethodsXLC.filterFunction = declaredBy_filterFunc;
  30.                     factoryMethodsXLC.refresh();
  31.                 } else {
  32.                     factoryMethodsXLC.filterFunction = null;
  33.                     factoryMethodsXLC.refresh();
  34.                 }
  35.             }
  36.  
  37.             private function declaredBy_filterFunc(item:XML):Boolean {
  38.                 return item.@declaredBy == describeTypeXML.@name;
  39.             }
  40.         ]]>
  41.     </mx:Script>
  42.  
  43.     <mx:XML id="describeTypeXML" />
  44.  
  45.     <mx:XMLListCollection id="factoryMethodsXLC" />
  46.  
  47.     <mx:VBox>
  48.         <mx:DataGrid id="factoryMethodsGrid"
  49.                 dataProvider="{factoryMethodsXLC}"
  50.                 width="400"
  51.                 rowCount="7">
  52.             <mx:columns>
  53.                 <mx:DataGridColumn dataField="@name" />
  54.                 <mx:DataGridColumn dataField="@returnType" />
  55.                 <mx:DataGridColumn dataField="@declaredBy" />
  56.             </mx:columns>
  57.         </mx:DataGrid>
  58.         <mx:HBox width="100%">
  59.             <mx:Button id="sortBtn"
  60.                     label="Sort ({factoryMethodsGrid.dataProvider.length} items)"
  61.                     click="sortXLC()" />
  62.             <mx:Spacer width="100%" />
  63.             <mx:CheckBox id="filterCh"
  64.                     label="{describeTypeXML.@name} only"
  65.                     click="filterXLC()" />
  66.         </mx:HBox>
  67.     </mx:VBox>
  68.  
  69. </mx:Application>
代码:Peter deHaan 翻译/整理/编译:minidxer

Topics: Flex | Tags: , , ,

Search Posts

Archives

Sponsored Ads