您好,登錄后才能下訂單哦!
小編給大家分享一下如何通過Flex組合框來過濾DataGrid,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
通過Flex組合框來過濾DataGrid
Flex中一個很普遍的應用就是用Flex組合框過濾顯示在DataGrid中的數據。在這個技巧里,目的是把一個“作者”數據庫表里的數據顯示到DataGrid里,表的結構如下:
CODE:
authorId:String; authorName:String; status:String;
◆另外,用戶可以選擇Flex組合框中包含的不同的作者狀態的值來過濾DataGrid顯示的作者信息。推薦你把從服務器請求獲得的結果轉換為ArrayCollection,然后把這個ArrayCollection作為DataGrid的dataProvider。這樣做你會發現操作和過濾顯示的數據會很變得容易。獲取數據超出了現在這個技巧的范圍,不過關于這個問題有很多的例子可以參考。
首先,把結果轉換為ArrayCollection。
CODE:
importmx.utils.ArrayUtil; importmx.collections.ArrayCollection; //event.resultcontainsthedatafromtheauthorssearch. publicvarauthorsArray:Array=mx.utils.ArrayUtil.toArray(event.result); //UseauthorsDataProviderasthedataProviderforthedataGrid. [Bindable] publicvarauthorsDataProvider:ArrayCollection=newArrayCollection(authorsArray);
◆接下來,把搜索結果中的作者狀態值動態加載到Flex組合框中。在這里,數據庫中可能的作家狀態值是"Active","Inactive"和"Deleted"。但是在進行之前,讓我們來回顧一下用例。我們把搜索作者得到的結果通過DataGrid視圖向用戶顯示出來,在看過之后,用戶可能希望過濾這些數據讓它只顯示“Active”的作者。當然,Flex組合框中的"Active","Inactive"和"Deleted"可以直接硬編碼,但是如果那樣做的話,當數據庫中添加了一個新的狀態值得時候我們必須修改程序。
而且,Flex組合框中的值應該只包含搜索結果中的作者狀態,如果搜索結果只包含狀態為"Active"和"Inactive"的作者,Flex組合框應該只包含相應的值(沒有”Delete”)。如果所有數據庫中可能的作者狀態值都在Flex組合框中硬編碼,用戶就可以選擇”Delete”這個值,然后就會看到一個沒有任何數據的DataGrid。我們不想困擾用戶,所以接下來的代碼會動態加載作者狀態值到一個數組,然后把這個數組作為Flex組合框的dataProvider。
CODE:
//UsetheauthorsStatusArrayasthedataProviderfortheCombox. [Bindable] publicvarauthorsStatusArray:Array=populateAuthorsStatusArray(authorsArray); publicfunctionpopulateAuthorsStatusArray(authorsArray:Array):Array { varstatusArrayHashMap:Object=newObject(); varstatusArray:Array=newArray; varn:int=authorsArray.length; for(vari:int=0;i<n;i++) { if(statusArrayHashMap[authorsArray[i].status]==undefined) { statusArrayHashMap[authorsArray[i].status]=newObject(); statusArray.push(authorsArray[i].status); } } statusArray.sort(); statusArray.unshift("All"); //The"All"valueisusedprogrammaticallytoun-filter(reset)theresultinthedataGrid. returnstatusArray; }
下面是mxml寫的代碼:
CODE:
<mx:Comboxidmx:Comboxid="cboAuthorsStatusFilter" dataProvider="{authorsStatusArray}" change="filterAuthorsGrid();"/>
這就是全部的技巧。因為DataGrid的dataProvider利用了綁定(binding),所以當用戶在Flex組合框中選中了一個值的時候,DataGrid會動態顯示過濾后的結果。請緊記,這只是一個小技巧而且可能有一些生澀的地方。但是你應該可以通過這些代碼領會這種思想。
以上是“如何通過Flex組合框來過濾DataGrid”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。