Flex动态生成可编辑的DataGrid具体实现代码_Flex

一:先说说我写这个DataGrid具有的功能
1、表头是动态生成的。
2、每行都是有序号的。
3、每行都是可以编辑、插入、删除、修改的。
4、每个单元格都是加验证的。
5、单元格有些是经过渲染生成的比如:Combobox,DateField...

二、说一些实现这些功能的困难
写这个的时候感觉都是困难不知道,走过来了也就木有神马啦,最让我费劲的就是渲染例如:Combobox在渲染的时候不能用ItemRenderer因为他不能绑定值,只能用ItemEditor但是怎样获得这个一个经过渲染的对象,通过百度不断地百度,终于发现了ClassFactory这个工厂可以生产各种想要的组件。各种困难现在都记不起来了,三天时间终于完成啦。为什吗要这样写呢?因为要做数据更新系统,每年数据都会有变化,这样页面也需要变化,总不能每年都去改源码吧,不如想个法子全给他整成动态的。这就是写这个的初衷。

三、关键源码

复制代码 代码如下:

package datagridview
{
import com.adobe.serialization.json.JSON;
import com.jzh.test.ComboxColumn;
import com.jzh.test.ComboxItem;
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.controls.ComboBase;
import mx.controls.ComboBox;
import mx.controls.DateField;
import mx.controls.RadioButtonGroup;
import mx.controls.advancedDataGridClasses.AdvancedDataGridColumn;
import mx.core.ClassFactory;
import mx.validators.RegExpValidator;
import spark.components.DropDownList;
public class RendererUtil
{
public function RendererUtil()
{
}
public static function getButtonRenderer():ClassFactory{
var f:ClassFactory=new ClassFactory(OperateButtons);
f.properties={};
return f;
}
public static function getNumRenderer():ClassFactory{
var f:ClassFactory=new ClassFactory(numLabel);
f.properties={};
return f;
}
public static function getComboxRenderer(arr:ArrayCollection,label:String):ClassFactory{
//应该在这里查询数据库
var f:ClassFactory=new ClassFactory(ComboBox);
f.properties={dataProvider: arr,labelField:label,selectedIndex:'0',selectedItem:'石质路面'};//添加属性,绑定选择状态
return f;
}
public static function getRadioRenderer(label:String):ClassFactory{
var f:ClassFactory=new ClassFactory(ComboBox);
var arr:ArrayCollection=new ArrayCollection();
arr.addItem("是");
arr.addItem("否");
f.properties={dataProvider: arr,labelField:label,selectedIndex:'0',selectedItem:'否'};//添加属性,绑定选择状态
return f;
}
public static function getDateRenderer():ClassFactory{
var f:ClassFactory=new ClassFactory(DateField);
f.properties={formatString:"YYYY-MM-DD",showToday:true};//添加属性,绑定选择状态
return f;
}
/*本来想在这渲染生成验证器的,无奈技术在达不到*/
public static function getValidateRenderer():ClassFactory{
var f:ClassFactory=new ClassFactory(RegExpValidator);
f.properties={ source:"roadcode",
property:"text" ,
expression:"^[0-9]*$",
noMatchError:"填写验证不通过时显示他提示信息" };//添加属性,绑定选择状态
return f;
}
/*测试用*/
public static function getRenderer(label:String,callback:Function=null):ClassFactory{
var f:ClassFactory=new ClassFactory(numLabel);
f.properties={lab:label,callback:callback};
return f;
}
}
}

以上代码是渲染器部分。

时间: 2024-10-21 11:40:20

Flex动态生成可编辑的DataGrid具体实现代码_Flex的相关文章

如何通过动态生成Html灵活实现DataGrid分类统计的界面显示功能

datagrid|动态|生成html|统计|显示 步入IT业已经有几年的时间了,从最早接触pb6.0到现在.Net技术,计算机技术不论是从硬件还是软件都有巨大的进步.而中国程序员总体水平在世界上也是远远落后,其中缺乏完善的体系.必要的交流和程序员个人英雄主义的思想是主要原因.前不久在工作中遇到一个关于用DataGrid分类显示数据的问题,显示的样式入下图所示: 希望能为遇到类似问题的朋友提供一个解决方案,并掌握类似问题的解决方法. 问题剖析: 以上为例,每门课程属于不同的类别,需要将显示数据的第

javascript动态生成图文上传控件实现代码

步骤/方法  ①将aspx页面中Form标签改为  代码如下 复制代码 :<form id="form1" runat="server" enctype= "multipart/form-data">, 也就是说在原有的基础上增加了enctype= "multipart/form-data" ②在页面中加入如下代码,这里包含了一个div容器,以方便用js动态向容器中增加控件  代码如下 复制代码 <div a

flex通过java后台获取ip和pcname示例代码_Flex

在***DAOImpl.java中的代码如下 复制代码 代码如下: public String getCompuName() { Map<String, String> map = System.getenv() ; String computerName = map.get("COMPUTERNAME");// 获取计算机名 return computerName; } public String getIp() { InetAddress addr = null; tr

Flex Label控件竖排显示文字的实现代码_Flex

复制代码 代码如下: private function rotationText(event:FlexEvent):void{ var text:String = event.currentTarget.text; var length:int = text.length; var newText:String = ""; for(var i:int = 0; i < length; i++) { newText+=text.charAt(i)+"\r"; }

请问winform动态生成的控件如何保存位置等信息?

问题描述 就是关闭之后,下次打开,动态生成的控件还能在原来的位置,而不是重置,如果直接设置的控件我可以写入到xml当中,下次读取,但是动态生成呢,比如说点击一个button然后可以生成另外一个可以拖动的button,在运行界面我拖动新生成button到某个位置,关闭之后再次打开,我希望新生成的button还在,谢谢各位! 解决方案 本帖最后由 haixilk 于 2014-07-11 10:42:36 编辑解决方案二:最简单的用this.Hide()this.Show()解决方案三:关闭的时候保

浮动的工具条,工具条上的按钮能不能动态生成?

问题描述 浮动的工具条,工具条上的按钮能不能动态生成? 浮动的工具条,工具条上的按钮能不能动态生成?用什么方法可以用代码添加按钮到工具条上呢? 解决方案 http://www.cnblogs.com/lidabo/p/3701774.htmlhttp://www.itnose.net/detail/104833.html

Flex中如何动态生成DataGrid以及动态生成表头_Flex

在Flex中动态生成表格,并且表格的表头也是动态生成 1.源码 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initHandler()" width

DataGrid连接Access的快速分页法(4)——动态生成SQL语句

access|datagrid|动态|分页|语句 DataGrid连接Access的快速分页法(4)--动态生成SQL语句using System;using System.Text;namespace Paging{ /// <summary> /// FastPaging 的摘要说明. /// </summary> public class FastPaging { private FastPaging() { } /// <summary> /// 获取根据指定字

C#实现DataGrid(GridView)动态生成列

有时候需要在DataGrid(GridView)里显示的数据列数是不固定的,而且还需要对数列列进行控制,如显示或隐藏,这时我们就不能用DataGrid里的自动生成列,更不能对列做数据绑定了,但我们有个办法,就是动态地生成数据列,DataGrid的动态列其实就是以类的形式存在,功能很强大. 要实现动态列,首先要添加一个类文件,这个类必须要继承ITemplate接口,主要是要实现一个方法:InstantiateIn,在InstantiateIn里做的是对该动态列做事件控制的绑定,如OnDataBin