国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > WEB開發(fā) > 正文

7.8.為DataGrid創(chuàng)建一個獨立的復選框項渲染器

2024-04-27 13:52:00
字體:
供稿:網(wǎng)友
7.8.1.問題
你要為DataGrid 創(chuàng)建一個含有CheckBox 的itemRenderer,無論DataGridColumn 的寬度如何,都要始終保持CheckBox 在renderer 的中央。
7.8.2. 解決辦法
繼承CheckBox 的類,并且重寫updateDisplayList 方法,從而設置CheckBox 的位置,在clickHandler 中增加部分功能:根據(jù)CheckBox 的選中狀態(tài)設置DataGrid 里的變量值。
7.8.3. 討論
下邊是一個可以把自己放置在DataGridColumn 中央的itemRenderer。這個類己經(jīng)完成了所有renderer 的功能,并且把MouseEvent 繼續(xù)向外派發(fā),如果你對這個事件感興趣,可以捕獲它,并做某些操作。例如你可以在DataGrid 所在的文件里注冊一個監(jiān)聽器用于監(jiān)聽MouseEvent,在事件發(fā)生之后可以使一個Lable 顯示當前己被選中CheckBox 的個數(shù)。
+展開
-ActionScript
package {
import flash.display.DisplayObject;
import flash.events.MouseEvent;
import flash.text.TextField;
import mx.controls.CheckBox;
import mx.controls.dataGridClasses.DataGridListData;
public class CenteredCheckBoxItemRenderer extends CheckBox {
// this function is defined by mx.controls.CheckBox
// it is the default handler for its click event
override protected function clickHandler(event:MouseEvent):void {
super.clickHandler(event);
data[DataGridListData(listData).dataField] = selected;
}
// center the checkbox icon
override protected function updateDisplayList(w:Number,h:Number):void{
super.updateDisplayList(w, h);
var n:int = numChildren;
for (var i:int = 0; i < n; i++){
var c:DisplayObject = getChildAt(i);
// CheckBox component is made up of icon skin and label TextField
// we ignore the label field and center the icon
if(!(c is TextField)){
c.x = Math.round((w - c.width) / 2);
c.y = Math.round((h - c.height) / 2);
}
}
}
}
}

在以上的代碼中有兩點值得注意:1、這個類沒有實現(xiàn)ClassFactory 接口,這意味著,我們可以把這個類的全名作為DataGrid 的itemRenderer 屬性。又因為這個類是一個dropin renderer ,因為他繼承了CheckBox ,CheckBox 繼承了Button,Button 實現(xiàn)了IDropInListItemRenderer 接口, 所以你可以根據(jù)一個傳入來的外部變量設置它的選中狀態(tài)。2、你不必去重寫data 的set get 方法,因為這些方法我們己經(jīng)從CheckBox 那里繼承了。
 
+展開
-ActionScript
data[DataGridListData(listData).dataField] = selected;

這里我們用了listData,這是IDropInListItemRenderer 里定義的屬性,也就是說,所有drop-in renderer 都有這個屬性,系統(tǒng)創(chuàng)建renderer 時會首先初始化listData 這個屬性,接下來才會根據(jù)listData 去初始化data。dataField 是我們在column 上配置的屬性,在本例中, dataField 應該是CheckBox 在dataprovider 里對應的屬性名。這樣,data[DataGridListData(listData).dataField]就是那個屬性名對應的值了,在這里說值,不太恰當,因為它在等號左邊,這里應該說是dataProvider 里那個變量的引用,就是說,你改了它,dataProvider 里的值也就跟著改了。

原文是想說明,如何設置itemRenderer 中的組件處于單元格的中央,可是整節(jié)都在講listData。不過,設置位,卻實沒有什么可說的,都在updateDisplayList 中。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 盈江县| 荔浦县| 哈巴河县| 乐东| 汝城县| 阜城县| 曲阳县| 上高县| 水富县| 尉犁县| 南投市| 阳高县| 大田县| 乐至县| 象州县| 涟源市| 松阳县| 陈巴尔虎旗| 华阴市| 阆中市| 读书| 庄河市| 邹城市| 正蓝旗| 太仓市| 定远县| 德惠市| 凤庆县| 昆明市| 时尚| 社旗县| 彩票| 红桥区| 错那县| 惠东县| 乌审旗| 德化县| 德化县| 长海县| 曲水县| 富平县|