<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="initApp()"> <mx:HTTPService id="srv" url="assets/homesforsale.xml" resultFormat="object" result="onResult(event)"/> <mx:Form> <mx:FormItem label="Search"> <mx:TextInput id="search_ti"/> </mx:FormItem> <mx:FormItem> <mx:Button label="Search City" click="searchCity()"/> </mx:FormItem> </mx:Form> <mx:DataGrid id="grid" width="300" height="150" editable="true" dataProvider="{homesForSale}"> <mx:columns> <mx:DataGridColumn headerText="Total No." dataField="total"/> <mx:DataGridColumn headerText="City" dataField="city"/> <mx:DataGridColumn headerText="State" dataField="state"/> </mx:columns> </mx:DataGrid> <mx:Script> <!--[CDATA[ import mx.collections.SortField; import mx.collections.Sort; import mx.collections.IViewCursor; import mx.events.FlexEvent; import mx.collections.ArrayCollection; import mx.rpc.events.ResultEvent; [Bindable] private var homesForSale:ArrayCollection; private var cursor:IViewCursor; private function initApp():void { this.srv.send(); } private function onResult(evt:ResultEvent):void { var sort:Sort=new Sort(); sort.fields=[new SortField("city", true)]; this.homesForSale=evt.result.data.region; this.homesForSale.sort=sort; this.homesForSale.refresh(); this.cursor=this.homesForSale.createCursor(); //注意你可以赋值Sort 对象给定义了ArrayCollection,dataProvider 数据项city 属性作为可排 //序字段。这是因为IViewCursor 的findFirst 和其他查找方法只可以被可排序视图所调用。 } private function searchCity():void { if (search_ti.text != "") { //这个方法中,用户输入的city 名称作为IViewCursor 的findFirst 方法的搜索参数。当找到 //ArrayCollection 中的匹配项时该方法返回true 并更新游标对象的current 属性,指向匹配项。 //当匹配项被找到后,ArrayCollection 的getItemIndex 方法指出匹配项的具体位置,最后 //DataGrid 使用scrollToIndex 方法滚屏到匹配位置,selectedItem 属性被设置为匹配项。 //注意参数的括号 if (this.cursor.findFirst({city: search_ti.text})) { var idx:int=this.homesForSale.getItemIndex(this.cursor.current); this.grid.scrollToIndex(idx); this.grid.selectedItem=this.cursor.current; } } } ]]--> </mx:Script> </mx:Application>