Flex ArrayCollection 操作筆記 ——(一)
filterFunction屬性是由ListCollectionView類定義,它是ArrayCollection的父類。當過濾器函式被傳 遞給繼承自ListCollectionView的任何子類後,這裡為ArrayCollection物件,應用過濾器後必須呼叫refresh方法
flex ArrayCollection 儲存的物件中包含另一個物件。這是如果想要訪問最內層物件的屬性可以直接通過兩次“.”進行,但是這是如果最內層物件如果是空的程式會報錯退出。舉個例子說明:
public dynamic class CustomerInfor
{
private var _customerId:String;// 客戶ID(關鍵字)
private var _customerNam:String;// 客戶(唯一)
private var _phoneNum:String;// 手機號碼
private var _e_mail:String;// 客戶電子郵箱地址
private var _address:String;// 客戶地址
private var _customerType:String;// 客戶型別。批發客戶,零售客戶,
}
public dynamic class CustomerRecords
{
private var _customerRecordsId:String;// 客戶消費記錄ID(關鍵字)
private var _customer:CustomerInfor;// 客戶ID(關鍵字)
private var _consumeAmount:Number;// 交易金額
private var _consumeTimes:int;// 交易次數
private var _consumeDate:Date;// 交易日期
private var _goodsTypeNam:String;// 商品所屬種類(農作物、疫苗等)
}
var record1: CustomerRecords = new CustomerRecords ();
var record2: CustomerRecords = new CustomerRecords ();
var record3: CustomerRecords = new CustomerRecords ();
var records:ArrayCollection = new ArrayCollection(
[record1, record2, record3
]);
這裡我們看到一個CustomerRecords 物件裡面有一個CustomerInfor 型別的變數作為屬性,在新定義的records:ArrayCollection 中新增了三個CustomerRecords 型別的變數。現在我們對records進行操作。
首先是進行過濾:把customer 中“批發客戶”的銷售資訊篩選出來。
protected function id_test_clickHandler(event:MouseEvent):void
{
// TODO Auto-generated method stub
records.filterFunction = filterFuc;
records .refresh();
}
public function filterFuc( item:Object ):Boolean
{
// Alert.show(item.customer.toString(),'fail',4,this);
var tt:CustomerInfor = item.customer;
if( “批發客戶” == tt. customerType )
return true;
return false;
}
這裡我們需要注意的是如果一個CustomerRecords物件中customer屬性為空,那麼上述函式會報錯中止程式執行。
接要說用records作為資料來源來對元件提供資料:
1.作為DataGrid元件的資料來源
這個很簡單。例如:
<mx:columns>
<mx:DataGridColumn headerText="消費記錄ID" dataField="customerRecordsId" visible="false"/>
<mx:DataGridColumn headerText="客戶名" dataField="customer.customerNam" width="80" fontSize="11" textAlign="center" />
<mx:DataGridColumn headerText="交易金額" dataField="consumeAmount" width="70" fontSize="11" textAlign="center"/>
<mx:DataGridColumn headerText="交易次數" dataField="consumeTimes" width="70" fontSize="11" textAlign="center"/>
<mx:DataGridColumn headerText="交易日期" dataField="consumeDate" width="90" fontSize="11" textAlign="center" labelFunction="getformatDate"/>
<mx:DataGridColumn headerText="交易商品型別" dataField="goodsTypeNam" width="100" fontSize="11" textAlign="center" />
</mx:columns>
</mx:DataGrid>
2.作為DropDownList(以及相似的元件)的資料來源
這裡有些人可能想當然的以為和DataGrid類似即可,如下述程式碼:
在這裡很遺憾的告訴你,你的想法錯了,錯的很厲害。
這個地方是一個很糾結的,下面講一下我的解決辦法,程式碼如下:
也就是新增一個labelFunction函式。
private function droptest( item:Object ):String
{
return item.customer.customerNam;
}
實驗一下,哈哈可以正常顯示目標資料了。
但是這裡還是有一點小問題的。知道labelFunction含義的或許已經想到了。沒錯就是labelFunction執行時已經把繫結的資料改變成String型別了。這時再選中的資料就是一個String型別。所以我們無法得到想要的CustomerRecords物件啊。
這裡說一下我的解決辦法。
雖然labelFunction改變了改變了元件中得資料型別,但是對於資料來源的資料並沒有變化,而且對應的資料位置也沒有變化。所以這裡我們可以先獲取選中項的INDEX再根據這個從資料來源中獲取目標資料。
恩這次就總結這麼多吧。
相關文章
- flex佈局筆記Flex筆記
- flex學習筆記Flex筆記
- flex:1學習筆記Flex筆記
- flex 學習筆記 ExternalInterfaceFlex筆記
- Flex佈局學習筆記Flex筆記
- Flex學習筆記(Day 1)Flex筆記
- Flex學習筆記(Day 2)Flex筆記
- 我的前端筆記 之 flex 篇前端筆記Flex
- CSS學習筆記:flex佈局CSS筆記Flex
- CSS 小結筆記之伸縮佈局 (flex)CSS筆記Flex
- ManjarorLinux操作筆記JARLinux筆記
- 學習筆記【MySQL基礎操作-第一節:MySQL基本操作】筆記MySql
- 學習筆記(十一):ArkUi-彈性佈局 (Flex)筆記UIFlex
- Redis In Action 筆記(一):基本資料型別及其操作Redis筆記資料型別
- laravel筆記+資料庫操作Laravel筆記資料庫
- JavaFx基礎操作【個人筆記】Java筆記
- MySQL學習筆記--基本操作MySql筆記
- “React中的DOM操作”筆記React筆記
- PHP筆記--資料庫操作PHP筆記資料庫
- Flex Viewer 解析(一)Flex Viewer簡介FlexView
- flex 彈性佈局的基本操作Flex
- 筆記一筆記
- python file 檔案操作筆記Python筆記
- 筆記-go反射操作私有變數筆記Go反射變數
- 【numpy學習筆記】矩陣操作筆記矩陣
- Django筆記三十四之分頁操作Django筆記
- 12.目錄操作(perl筆記)筆記
- Manim 學習筆記(一)--常用的幾個函式和操作筆記函式
- 股票操作瑣記(一)
- Dubbo筆記(一)筆記
- 前端筆記(一)前端筆記
- Scala筆記(一)筆記
- MyBatis筆記(一)MyBatis筆記
- RUST 筆記(一)Rust筆記
- docker筆記(一)Docker筆記
- Bootstrap筆記《一》boot筆記
- 機器學習筆記(一)機器學習筆記
- React筆記(一)React筆記