<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.collections.*;
/* Function to sort the ICollectionView
in ascending order. */
public function sortAC():void {
var sortA:Sort = new Sort();
sortA.fields=[new SortField("label")];
myAC.sort=sortA;
//Refresh the collection view to show the sort.
myAC.refresh();
}
/* Function to filter out all items with labels
that are not in the range of M-N. */
public function stateFilterFunc(item:Object):Boolean {
return item.label >= "M" && item.label < "O";
}
/* Function to apply the filter function the ICollectionView. */
public function filterAC():void {
myAC.filterFunction=stateFilterFunc;
/* Refresh the collection view to apply the filter. */
myAC.refresh();
}
/* Function to Reset the view to its original state. */
public function resetAC():void {
myAC.filterFunction=null;
myAC.sort=null;
//Refresh the collection view.
myAC.refresh();
}
]]>
</fx:Script>
<fx:Declarations>
<mx:ArrayCollection id="myAC">
<fx:Array id="myArray">
<fx:Object label="LA" data="Baton Rouge"/>
<fx:Object label="NH" data="Concord"/>
<fx:Object label="TX" data="Austin"/>
<fx:Object label="MA" data="Boston"/>
<fx:Object label="AZ" data="Phoenix"/>
<fx:Object label="OR" data="Salem"/>
<fx:Object label="FL" data="Tallahassee"/>
<fx:Object label="MN" data="Saint Paul"/>
<fx:Object label="NY" data="Albany"/>
</fx:Array>
</mx:ArrayCollection>
</fx:Declarations>
<!-- Buttons to filter, sort, or reset the view in the second ComboBox
control. -->
<mx:HBox x="0" y="20" width="100%" height="30">
<mx:Button id="sortButton" label="Sort" click="sortAC();"/>
<mx:Button id="filterButton" label="Filter" click="filterAC();"/>
<mx:Button id="resetButton" label="Reset" click="resetAC();"/>
</mx:HBox>
<mx:VBox x="0" y="40" width="550" height="143" borderStyle="solid" paddingTop="10" paddingLeft="10">
<mx:Label text="This box retains original order and contents of the Array:"/>
<!-- A ComboBox populated by the underlying Array object.
This control shows that Array retains its original order. -->
<mx:ComboBox id="cb2" rowCount="10" dataProvider="{myArray}" labelField="data"/>
<mx:HRule/>
<mx:Label text="This box reflects the changes to the Array:"/>
<!-- A ComboBox populated by the collection view of the Array. -->
<mx:ComboBox id="cb1" rowCount="10" dataProvider="{myAC}" labelField="data"/>
</mx:VBox>
</s:Application>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.collections.*;
/* Function to sort the ICollectionView
in ascending order. */
public function sortAC():void {
var sortA:Sort = new Sort();
sortA.fields=[new SortField("label")];
myAC.sort=sortA;
//Refresh the collection view to show the sort.
myAC.refresh();
}
/* Function to filter out all items with labels
that are not in the range of M-N. */
public function stateFilterFunc(item:Object):Boolean {
return item.label >= "M" && item.label < "O";
}
/* Function to apply the filter function the ICollectionView. */
public function filterAC():void {
myAC.filterFunction=stateFilterFunc;
/* Refresh the collection view to apply the filter. */
myAC.refresh();
}
/* Function to Reset the view to its original state. */
public function resetAC():void {
myAC.filterFunction=null;
myAC.sort=null;
//Refresh the collection view.
myAC.refresh();
}
]]>
</fx:Script>
<fx:Declarations>
<mx:ArrayCollection id="myAC">
<fx:Array id="myArray">
<fx:Object label="LA" data="Baton Rouge"/>
<fx:Object label="NH" data="Concord"/>
<fx:Object label="TX" data="Austin"/>
<fx:Object label="MA" data="Boston"/>
<fx:Object label="AZ" data="Phoenix"/>
<fx:Object label="OR" data="Salem"/>
<fx:Object label="FL" data="Tallahassee"/>
<fx:Object label="MN" data="Saint Paul"/>
<fx:Object label="NY" data="Albany"/>
</fx:Array>
</mx:ArrayCollection>
</fx:Declarations>
<!-- Buttons to filter, sort, or reset the view in the second ComboBox
control. -->
<mx:HBox x="0" y="20" width="100%" height="30">
<mx:Button id="sortButton" label="Sort" click="sortAC();"/>
<mx:Button id="filterButton" label="Filter" click="filterAC();"/>
<mx:Button id="resetButton" label="Reset" click="resetAC();"/>
</mx:HBox>
<mx:VBox x="0" y="40" width="550" height="143" borderStyle="solid" paddingTop="10" paddingLeft="10">
<mx:Label text="This box retains original order and contents of the Array:"/>
<!-- A ComboBox populated by the underlying Array object.
This control shows that Array retains its original order. -->
<mx:ComboBox id="cb2" rowCount="10" dataProvider="{myArray}" labelField="data"/>
<mx:HRule/>
<mx:Label text="This box reflects the changes to the Array:"/>
<!-- A ComboBox populated by the collection view of the Array. -->
<mx:ComboBox id="cb1" rowCount="10" dataProvider="{myAC}" labelField="data"/>
</mx:VBox>
</s:Application>