`

flex之鸡肋功能——双击编辑列内容

    博客分类:
  • Flex
阅读更多
flex中的DataGrid是支持单击编辑单元格内容的,不过这确实不够方便,单击是选中数据的,怎么能变成修改呢!在网上查了看,利用一个DataGrid组件,可以实现双击修改
此组件源码为:
DoubleClickDataGrid.as
package 
{
import flash.events.MouseEvent;
import mx.controls.DataGrid;
import mx.controls.dataGridClasses.DataGridColumn;
import mx.controls.listClasses.IDropInListItemRenderer;
import mx.controls.listClasses.IListItemRenderer;
import mx.core.EventPriority;
import mx.events.DataGridEvent;

/** 
 *  DataGrid that only allows editing if you double click
 */
public class DoubleClickDataGrid extends DataGrid
{

	public function DoubleClickDataGrid()
	{
		super();
		doubleClickEnabled = true;
	}

	override protected function mouseDoubleClickHandler(event:MouseEvent):void
	{
        var dataGridEvent:DataGridEvent;
        var r:IListItemRenderer;
		var dgColumn:DataGridColumn;

        r = mouseEventToItemRenderer(event);
		if (r && r != itemEditorInstance)
		{
			var dilr:IDropInListItemRenderer = IDropInListItemRenderer(r);
			if (columns[dilr.listData.columnIndex].editable)
			{
				dgColumn = columns[dilr.listData.columnIndex];
                dataGridEvent = new DataGridEvent(DataGridEvent.ITEM_EDIT_BEGINNING, false, true);
                // ITEM_EDIT events are cancelable
                dataGridEvent.columnIndex = dilr.listData.columnIndex;
                dataGridEvent.dataField = dgColumn.dataField;
                dataGridEvent.rowIndex = dilr.listData.rowIndex + verticalScrollPosition;
                dataGridEvent.itemRenderer = r;
                dispatchEvent(dataGridEvent);
            }
        }

		super.mouseDoubleClickHandler(event);
	}

	override protected function mouseUpHandler(event:MouseEvent):void
	{
        var r:IListItemRenderer;
		var dgColumn:DataGridColumn;

        r = mouseEventToItemRenderer(event);
		if (r)
		{
			var dilr:IDropInListItemRenderer = IDropInListItemRenderer(r);
			if (columns[dilr.listData.columnIndex].editable)
			{
				dgColumn = columns[dilr.listData.columnIndex];
				dgColumn.editable = false;
			}
		}

		super.mouseUpHandler(event);
		
		if (dgColumn)
			dgColumn.editable = true;
		
	}
}
}

响应事件是itemEditEnd时,不知道怎么得到处理完的对象。只能处理一个字段修改:
//双击修改处理1
private function itemedit(e:DataGridEvent):void
{

var obj:ListTestVO = ListTestVO(e.itemRenderer.data);//获得修改之前的对象
var oldname:String = e.itemRenderer.data.name;//获得修改之前对象的名字
obj.name = e.currentTarget.itemEditorInstance.text;//把修改后的值附给obj
if(oldname!=obj.name){
listTestSvc.update(obj);
}


用itemFocusOut事件,倒可以轻松获取修改后的对象,不过不知道如何验证....
//双击修改处理2
private function itemedit(e:DataGridEvent):void
{
var obj:ListTestVO = ListTestVO(e.itemRenderer.data);//获得修改之后的对象
listTestSvc.update(obj);
dg.addEventListener(DataGridEvent.ITEM_EDIT_END,itemedit);
dg.removeEventListener(DataGridEvent.ITEM_EDIT_BEGINNING,itemedit);
}

还有出现一个问题,修改后,你切换一下页面,在你默认选中的列,会变成可修改的状态...



至今也没弄清楚哪儿的问题....哎,真是鸡肋功能啊!


值得参考的资料:
Flex中获得DataGrid中编辑前后的数据
http://liguoliang.com/2008/10/256/


  • 大小: 14.9 KB
分享到:
评论

相关推荐

    Flex第一步——基于ActionScript 3

    本篇内容将深入探讨“Flex第一步——基于ActionScript 3”,这对于初学者来说是一份极具价值的学习资料。 首先,我们需要了解ActionScript 3。ActionScript是Flash平台的核心语言,而ActionScript 3是其最新版本,...

    FLEX技术之四——界面布局和导航

    flex界面布局和导航,flex各个控件的使用,布局的容器和布局的空间,详细的代码演示

    至理.精通Flex网络开发技术——源代码

    Flex是一个开源的框架,用于构建富互联网应用程序(RIA),它基于Flash Player或Adobe AIR运行时环境,提供了一套丰富的用户界面组件和强大的数据绑定功能。学习Flex开发,首先需要理解MXML和ActionScript这两种核心...

    Flex:Web报表引擎——MyReport 2.3.6.0 + 免Flex开发集成版

    --修改功能:修改报表编辑器,添加列,删除列功能 --修改功能:修改报表编辑器行编辑效果 --优化样式文件数据量 release 2.3.5.1 --修正Bug:单元格合并时,合并列宽计算错误 release 2.3.5.0 --新增功能:增加...

    Flex:Web报表引擎——MyReport 2.3.0.0 + 免Flex开发集成版

    Flex:Web报表引擎——MyReport 2.3.0.0 + 免Flex开发集成版 --新增功能:重新设计表达式解析引擎,支持更多函数,运算符,支持运算符函数递归嵌套 --新增功能:重新设计表达式编辑器 --新增功能:新增字体颜色设置...

    Flex教程系列之(四) AS3语法——面对对象编程

    Flex教程系列之(一) AS3语法——编程基础 http://download.csdn.net/source/1161756 Flex教程系列之(二) AS3语法——流程控制语句 http://download.csdn.net/source/1161804 Flex教程系列之(三) AS3语法——控制...

    FLEX 图文编辑器(FLEX HTML编辑器)

    它允许用户在编辑环境中自由组合文本和图像,提供了类似Word的功能,如复制粘贴,使得内容创建更加便捷。这款编辑器的后端上传功能是基于PHP实现的,但其灵活性很高,可以轻松地适应ASP、ASP.NET或JAVA等其他服务器...

    创建第一个Flex应用——编码模式

    创建第一个Flex应用——编码模式创建第一个Flex应用——编码模式创建第一个Flex应用——编码模式

    创建第一个Flex应用——设计模式

    创建第一个Flex应用——设计模式创建第一个Flex应用——设计模式创建第一个Flex应用——设计模式

    FLEX入门篇——日期的格式化

    本文将围绕“FLEX入门篇——日期的格式化”这一主题,深入探讨如何在Flex中处理和格式化日期。日期格式化在任何应用程序中都是常见的需求,尤其是在展示或存储用户友好的时间信息时。 首先,我们要了解Flex中处理...

    ArcGIS Flex 例子——源码(强烈推荐)

    **ArcGIS Flex 示例详解——源码深度解析** ArcGIS Flex 是 Esri 公司提供的一款基于 Adobe Flex 技术的 GIS 开发框架,它允许开发者创建丰富的、交互式的地图应用程序,用于网页上展示地理信息。这个压缩包包含的...

    FLEX ——完美的 TREE

    这个标题“FLEX ——完美的 TREE”提到了FLEX在实现一个特定功能——TREE组件方面的卓越表现。TREE组件是FLEX中用于展示层次结构数据的关键元素,它允许用户以树形结构查看和操作数据,这在许多场景下都非常有用,...

    Flex从入门到实践——源代码(9章)

    "Flex从入门到实践——源代码(9章)"这个压缩包文件提供了学习Flex开发的实用资源,包含了9个章节的源代码示例,这些章节可能覆盖了Flex的基础到进阶内容。 1. **Flex基础**:Flex的基础知识通常包括Flex SDK的安装...

    FLEX资源——FLEX数据绑定专题(中文PDF)

    Flex是一种用于构建富互联网应用程序(RIA)的开放源码框架,它允许开发者创建交互性强、功能丰富的Web应用。数据绑定是Flex中一个核心的概念,它简化了用户界面与应用程序数据之间的通信,使得数据的更新能够自动...

    flex基于actionscript源代码——适用Flex 4

    本源代码由本人在书:flex基于actionscript源代码(适用Flex 3)基础上修改成适用于Flex 4.6, 修改部分测试通过(13、14章涉及Java,17、18章涉及hibernate,暂没做修改),是学习Flex的入门参考好资料

    Flex:Web报表引擎+Web报表编辑器——MyReport 1.2.0.1

    Flex:Web报表引擎+Web报表编辑器——MyReport 1.2.0.1 New:1.2版本支持一维码(Code128B)显示,表头、表脚支持多联标题。详情:http://blog.csdn.net/hunkcai/archive/2010/05/29/5633838.aspx 最新版2.0.0.0支持...

    Flex教程系列之(五) AS3语法——静态常量继承和接口

    Flex教程系列之(一) AS3语法——编程基础 http://download.csdn.net/source/1161756 Flex教程系列之(二) AS3语法——流程控制语句 http://download.csdn.net/source/1161804 Flex教程系列之(三) AS3语法——控制...

Global site tag (gtag.js) - Google Analytics