Flex Dataprovider和Data概念解析
本文和大家重點討論一下Flex Dataprovider和Data聯系,要查看的數據集,Flex Dataprovider屬性允許您將大多數類型的對象用作數據提供程序。
Flex Dataprovider和Data概念
1、Flex Dataprovider
在AdobeActionScript3.0里面的定義如下:
要查看的數據集,此屬性允許您將大多數類型的對象用作數據提供程序。如果將Flex Flex Dataprovider屬性設置為Array,則會將其轉換為ArrayCollection。如果將該屬性設置為XML對象,則會將其轉換為僅包含一個項目的XMLListCollection。如果將該屬性設置為XMLList,則會將其轉換為XMLListCollection。如果將該屬性設置為實現IList或ICollectionView接口的對象,則可直接應用此對象。受轉換操作的影響,在您獲取Flex Dataprovider屬性時,該屬性值將始終為ICollectionView,所以此值不一定是您設置的對象類型。如果要修改數據提供程序中的數據,則了解以下行為非常重要:可能不會檢測對原始數據所做的更改,但將檢測對從Flex Dataprovider屬性獲取的ICollectionView對象所做的更改。默認值為null.此屬性可用作數據綁定的源。
◆上面那一大堆的東西其實就說明以下幾點:
a、凡是具有Flex Dataprovider的組件,都可以將Array、XML等內容作為數據源。
b、將這些作為數據源的內容“自動”綁定并顯示在這些控件上面。
所以通常的做法,當Flex獲取了外部數據后,可以將其直接賦值為Flex Dataprovider,然后通過一些設定,就可以在這些組件上面顯示數據了。
關于這個例子我就不在這里復述了,大家可以自行去找一下,或者直接看這里的內容:http://livedocs.adobe.com/flex/3_cn/mx/controls/ComboBox.html#includeExamplesSummary
2、itemRenderer(項目渲染器)及其Data屬性。
itemRenderer的作用就是可以自定義一些組件的項目顯示效果,例如我們熟知的Combobox、List、DataGrid等都具有這樣的屬性,也就是說,我們可以利用itemRenderer來改善ComBoBox里面的下拉的顯示效果。當然,List、DataGrid也是這樣的。
當ComboBox中自定義了一個渲染器后,同時使用Flex Dataprovider的方式綁定了一個數據源,這個時候,如何與我們自定義的渲染器里面的item發生作用呢?就是使用data方式。
也就是說,Flex Dataprovider可以綁定數據到UI、如果這個組件使用了自定義渲染器,那么就可以使用data.XXX的方式獲取到Flex Dataprovider里面的數據。
okay,以上介紹的兩個知識點是關于Flex組件的數據處理能力,其中Flex Dataprovider可以把Array、XML等內容作為數據源直接綁定并顯示到UI上面,而itemRenderer里面的data是實現組件與其渲染器之間的數據處理。
◆下一篇的內容是關于Flex與后臺進行通訊的常見的幾種方式:HTTPService、WebService、Remote等方式,而通過這幾種方式可以輕松的讓一些例如Java、C#、Python、Ruby、PHP等主流編程語言為Flex所服務:)
附加:
關于Flex Dataprovider、itemRenderer、data的具體用法有些抽象,因此我特此列舉一個例子來說明一下。
這是一個HorizontalList組件,而且其中它的itemRenderer=ToolBoxRenderer,想讓我們看一下HorizontalList的片段代碼:
- <mx:HorizontalListidmx:HorizontalListid="myHorizontalList"itemRenderer="ToolBoxRenderer">
- <mx:dataProvider>
- <mx:Array>
- <mx:Objecttooltipmx:Objecttooltip="rubber"styleName="rubber"language="{_language}"/>
- </mx:Array>
- </mx:dataProvider>
- </mx:HorizontalList>
然后是ToolBoxRenderer的片段代碼:
- <mx:Canvaswidthmx:Canvaswidth="30"height="30">
- <mx:Button
- width="30"height="30"
- toolTip="{data.tooltip}"
- styleName="{data.styleName}"/>
- </mx:Canvas>
◆再讓我們看看itemRenderer是如何與我們今天這個主題聯系起來的。
1、在myHorizontalList中定義了一個Flex Dataprovider,通過代碼可以看出是一個Array類型的變量,然后將其賦值給Flex Dataprovider。這個時候,其實就應該將數據顯示到myHorizontalList上面了,這也就是Flex Dataprovider的用處。
2、在Flex Dataprovider包含的Array中,定義如下的結構:<mx:Objecttooltip="rubber"styleName="rubber"language="{_language}"/>
3、我們不僅設定了Flex Dataprovider,還是同時設定了itemRenderer,即為ToolBoxRenderer。
4、在ToolBoxRenderer里面,定義了一個Button,同時我們使用類似于這樣的方式可以取得Flex Dataprovider里面的數據:toolTip="{data.tooltip}"
以上就是一個非常簡單,但是又非常典型的一個Flex Dataprovider、itemRenderer、data的用法,希望大家可以理解:)
【編輯推薦】
- 解析FlexSDK4的十大變化
- Flex ArrayCollection類用法詳解
- 在Flex中使用樣式的五大方法
- Flex Array和Flex ArrayCollection的用法和區別
- Flex ComboBox和Datagrid組件用法指導

















