首页 > 网站 > WEB开发 > 正文

6.5.为AdvancedDataGrid创建自定义表头

2024-04-27 13:52:40
字体:
来源:转载
供稿:网友
本章用到的 Flex3中文教程--homesforsale.xml文件
6.5.1. 问题

我想用一个复选框作为DataGrid 表头
6.5.2. 解决办法
继承AdvancedDataGridHeaderRenderer 类,并重写createChildren 和updateDisplayList 方法
6.5.3. 讨论
这一节根据上一节例子为city DataGridColumn 增加自定义表头渲染器。创建标题渲染器和创建项渲染器或项编辑器基本类似。一个实现IFactory 接口的类引用被传递给DataGridColumn 的headerRenderer 属性,这个例子使用CheckBoxHeaderRenderer 渲染器创建带有复选框的列表头:
+展开
-XML
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="verticalcreationComplete="initApp()">

<mx:HTTPService id="srvurl="assets/homesforsale.xml"
resultFormat="objectresult="onResult(event)"/>

<mx:Form>
<mx:FormItem label="City">
<mx:TextInput id="cityFilterchange="applyFilter()"/>
</mx:FormItem>
</mx:Form>
<mx:AdvancedDataGrid id="gridwidth="100%height="100%"
sortExpertMode="truedataProvider="{homesForSale}">

<mx:columns>
<mx:AdvancedDataGridColumn headerText="Total No."
dataField="total"/>

<mx:AdvancedDataGridColumn headerText="City"
sortable="false"
headerRenderer="CheckBoxHeaderRenderer"
dataField="city"/>

<mx:AdvancedDataGridColumn
headerText="State dataField="state"/>

<mx:AdvancedDataGridColumn headerText="Price Ranges
[<350K] [350K -600K] [>600K]
dataField="range"
itemRenderer="RangeRenderersortCompareFunction="sortRanges"/>

</mx:columns>
</mx:AdvancedDataGrid>
<mx:Script>
<![CDATA[
import mx.events.FlexEvent;
import mx.collections.ArrayCollection;
import mx.rpc.events.ResultEvent;
[Bindable]
private var homesForSale:ArrayCollection;
private function initApp():void {
this.srv.send();
}
private function onResult(evt:ResultEvent):void {
this.homesForSale = evt.result.data.region;
}
private function sortRanges(obj1:Object,
obj2:Object):int{
var value1:Number = obj1.range.range1;
var value2:Number = obj2.range.range1;
if(value1 < value2) {
return -1;
}
else if(value1 > value2){
return 1;
}
else {
return 0;
}
}
private function applyFilter():void {
if(this.homesForSale.filterFunction == null) {
this.homesForSale.filterFunction =
this.filterCities;
}
this.homesForSale.refresh();
}
private function filterCities(item:Object):Boolean {
var match:Boolean = true;
if(cityFilter.text != "") {
var city:String = item["city"];
var filter:String = this.cityFilter.text;
if(!city ||
city.toLowerCase().indexOf(filter.toLowerCase()) < 0) {
match = false;
}
}
return match;
}

]]>
</mx:Script>
</mx:Application>
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表