在Flex的DataGrid中显示按钮Button或者图片Image等,有时会需要Button的标签label,icon是动态改变的,DataGrid也是由Actionscript根据数据库中数据动态生成。这时我们需要自定义ClassFactory来实现这些特性。
package com.yonghong.model
{
import mx.core.ClassFactory;
public class MyClassFactory extends ClassFactory
{
//styleCollection represents a collection of style
//properties represents a collection of property
private var styleCollection:Object;
public function CMSClassFactory(generator:Class=null,properties:Object=null,styleCollection:Object=null)
{
super(generator);
this.properties=properties;
this.styleCollection=styleCollection;
}
public override function newInstance():*
{
var instance:Object = new generator();
if (properties != null)
{
for (var p:String in properties)
{
instance[p] = properties[p];
}
}
if(styleCollection != null){
for(var s:String in styleCollection){
instance.setStyle(s,styleCollection[s]);
}
}
return instance;
}
}
}
以上properties是父类ClassFactory的一个属性。至于动态创建DataGrid,我这里只列出关键代码如下:
//*****************************************
var aColumnDef:ArrayCollection = event.result as ArrayCollection;
var oColumnDef:Object;
var dg:DataGrid = new DataGrid;
var dgc:DataGridColumn=new DataGridColumn();
var aColumnsNew:Array = dg.columns
for (var i:int=0;i<event.result.length;i++) {
oColumnDef = event.result[i];
dgc = new DataGridColumn();
dgc.dataField = oColumnDef.id.datafield;
//MyButton 是自定义组件,在其中添加了一些事件
var cf:ClassFactory=new MyClassFactory(MyButton,{label:"ok"},{icon:add});
dgc.itemRenderer=cf;
}
aColumnsNew.push(dgc)
}
dg.columns = aColumnsNew;
dg.editable = true;
dg.dataProvider = ds;
//以下是MyButton的定义
package
{
import flash.events.Event;
import flash.events.MouseEvent;
import mx.controls.Alert;
import mx.controls.Button;
public class MyButton extends Button
{
private var currentData:Object;
public function MyButton()
{
super();
this.addEventListener(MouseEvent.CLICK ,clickHandle)
}
override public function set data(value:Object):void{
this.currentData = value; //保存整行的引用
}
private function clickHandle(e:Event):void{
//test 是 DataGrid中的一列
Alert.show("xx"+currentData.test);
}
}
}
希望能帮到一些朋友
分享到:
相关推荐
在自定义的ItemRenderer类中,可以添加各种Flex组件,如Button、RadioButton、CheckBox和DateField等。例如,要添加一个日期显示字段,可以这样做: ```actionscript private var dateField:DateField = new ...
本教程将详细讲解如何在Flex中创建一个自定义排序的DataGrid控件。 首先,我们需要了解Flex DataGrid的基本结构。DataGrid控件通常与一个数据提供者关联,这个提供者可以是ArrayCollection、XMLListCollection或...
对于DataGrid的列头,我们通常需要继承`mx.controls.DataGridColumnHeader`类,并在其上覆盖或扩展相关方法和属性,以实现自定义的功能。比如,我们可以添加一个ComboBox控件并处理其事件,以便在用户选择特定值时对...
自定义渲染器是Flex组件定制的一部分,它可以让我们对UI元素的显示方式有更大的控制力。在这个场景中,我们创建了一个针对DataGrid的自定义Label渲染器,这个渲染器能够根据数据显示不同的颜色,以突出关键信息或者...
- 在你的DataGrid配置对象中,为需要自定义的列设置`headerRenderer`属性,传入你之前创建的组件。 - 确保DataGrid能够识别并正确调用这个自定义渲染器。这通常涉及到在列定义对象中引入和引用你的组件。 3. **...
总的来说,Flex DataGrid的自定义显示列是通过灵活的列配置、自定义渲染器以及数据绑定来实现的。开发者可以根据业务需求,通过调整这些参数来创建高度定制化的数据展示界面,提高应用的用户体验。对于深入学习Flex...
综上所述,通过各种方式我们可以实现DataGrid的自定义列标题,包括文本、样式、交互性和动态调整列宽等特性,以满足不同场景下的需求。在实际项目中,根据具体业务逻辑和界面设计灵活运用这些方法,能够打造出更加...
在Flex开发中,DataGrid控件是用于展示数据集的常用组件,它可以显示多行多列的数据,并且具有丰富的自定义功能。本教程主要聚焦于如何在Flex中动态创建DataGrid,并向其中添加图片,这在创建交互式、富媒体应用时...
在Flex4中,`DataGrid`的列可以通过动态创建来适应变化的数据结构,这在处理不确定列数或列类型的应用场景中非常有用。 在描述中提到,数据可能是数组类型,列名和列个数都是动态的。这意味着在运行时,我们需要...
在某些情况下,我们可能需要根据特定条件改变DataGrid中的某一行或几行的背景颜色,以突出显示或者区分不同的数据状态。本篇文章将详细探讨如何在Flex中实现这一功能。 首先,我们需要理解DataGrid的基本结构。...
Flex 自定义DataGrid,带增删改查等各种功能.列锁定,序号等各种功能.
在标题提到的“WPF中的DataGrid、Button、ComboBox等样式+DataGrid分页控件”中,我们将深入探讨这些关键组件以及如何自定义它们的样式和实现分页功能。 首先,DataGrid是WPF中用于展示和编辑表格数据的强大控件。...
3. **配置`AdvancedDataGrid`组件**:Flex中的`AdvancedDataGrid`相对于基础的`DataGrid`提供了更丰富的功能,包括表头分组。在`AdvancedDataGrid`中,我们需要设置`<mx:columns>`子元素来定义列,并为需要分组的列...
- Flex中的DataGrid默认只支持单选或全选,但通过自定义实现,可以扩展到三状态多选。这通常涉及到监听`itemClick`事件,维护一个记录选中状态的数组,并更新ItemRenderer的视觉反馈。 - 用户可以通过复选框或者...
依赖属性是WPF中数据绑定的基础,它提供了属性值的改变通知和值验证等功能。在自定义控件中,我们常常需要定义依赖属性以便与外部数据源进行绑定。定义依赖属性的步骤如下: 1. 使用DependencyProperty.Register方法...
而动态生成DataGrid表头则是在运行时根据数据源来创建列,这在处理未知数量或类型的列时非常有用。这个主题涉及到ActionScript编程和Flex布局理解。 动态生成DataGrid表头的基本步骤如下: 1. **创建DataGrid对象*...
总结,改变Flex DataGrid中某一行的背景颜色通常涉及自定义ItemRenderer、使用CSS样式或者监听事件。选择哪种方法取决于具体需求,如是否需要复杂逻辑、性能要求以及代码可维护性等因素。通过这些技术,我们可以使...
- Flex允许自定义主题以改变菜单的外观。可以使用CSS或者修改默认的Spark或 Halo主题来实现。 - 示例代码: ```css /* 在皮肤CSS文件中 */ .myRightClickMenu { color: #0000FF; background-color: #FFFFFF; ...
通过自定义ItemRenderer并结合数据源的动态属性,我们可以灵活地控制Datagrid的视觉表现,使得应用更具吸引力和交互性。记得在实际项目中根据具体需求进行调整和优化,以保证最佳的性能和用户体验。