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

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

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

2024-04-27 13:52:00
字體:
供稿:網(wǎng)友
7.8.1.問題
你要為DataGrid 創(chuàng)建一個含有CheckBox 的itemRenderer,無論DataGridColumn 的寬度如何,都要始終保持CheckBox 在renderer 的中央。
7.8.2. 解決辦法
繼承CheckBox 的類,并且重寫updateDisplayList 方法,從而設(shè)置CheckBox 的位置,在clickHandler 中增加部分功能:根據(jù)CheckBox 的選中狀態(tài)設(shè)置DataGrid 里的變量值。
7.8.3. 討論
下邊是一個可以把自己放置在DataGridColumn 中央的itemRenderer。這個類己經(jīng)完成了所有renderer 的功能,并且把MouseEvent 繼續(xù)向外派發(fā),如果你對這個事件感興趣,可以捕獲它,并做某些操作。例如你可以在DataGrid 所在的文件里注冊一個監(jiān)聽器用于監(jiān)聽MouseEvent,在事件發(fā)生之后可以使一個Lable 顯示當(dāng)前己被選中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ù)一個傳入來的外部變量設(shè)置它的選中狀態(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 應(yīng)該是CheckBox 在dataprovider 里對應(yīng)的屬性名。這樣,data[DataGridListData(listData).dataField]就是那個屬性名對應(yīng)的值了,在這里說值,不太恰當(dāng),因為它在等號左邊,這里應(yīng)該說是dataProvider 里那個變量的引用,就是說,你改了它,dataProvider 里的值也就跟著改了。

原文是想說明,如何設(shè)置itemRenderer 中的組件處于單元格的中央,可是整節(jié)都在講listData。不過,設(shè)置位,卻實沒有什么可說的,都在updateDisplayList 中。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 抚顺市| 墨竹工卡县| 华亭县| 长春市| 陇川县| 林口县| 岐山县| 孝义市| 商水县| 静宁县| 桃江县| 九江市| 新郑市| 微山县| 灌南县| 耿马| 沙湾县| 墨竹工卡县| 泾川县| 化德县| 石阡县| 拜城县| 呼玛县| 东明县| 界首市| 湘乡市| 大关县| 沙雅县| 岚皋县| 柯坪县| 利川市| 崇义县| 大化| 安化县| 盘锦市| 江口县| 芒康县| 温泉县| 张家口市| 鱼台县| 西青区|