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”,这对于初学者来说是一份极具价值的学习资料。 首先,我们需要了解ActionScript 3。ActionScript是Flash平台的核心语言,而ActionScript 3是其最新版本,...
flex界面布局和导航,flex各个控件的使用,布局的容器和布局的空间,详细的代码演示
Flex是一个开源的框架,用于构建富互联网应用程序(RIA),它基于Flash Player或Adobe AIR运行时环境,提供了一套丰富的用户界面组件和强大的数据绑定功能。学习Flex开发,首先需要理解MXML和ActionScript这两种核心...
--修改功能:修改报表编辑器,添加列,删除列功能 --修改功能:修改报表编辑器行编辑效果 --优化样式文件数据量 release 2.3.5.1 --修正Bug:单元格合并时,合并列宽计算错误 release 2.3.5.0 --新增功能:增加...
Flex:Web报表引擎——MyReport 2.3.0.0 + 免Flex开发集成版 --新增功能:重新设计表达式解析引擎,支持更多函数,运算符,支持运算符函数递归嵌套 --新增功能:重新设计表达式编辑器 --新增功能:新增字体颜色设置...
Flex教程系列之(一) AS3语法——编程基础 http://download.csdn.net/source/1161756 Flex教程系列之(二) AS3语法——流程控制语句 http://download.csdn.net/source/1161804 Flex教程系列之(三) AS3语法——控制...
它允许用户在编辑环境中自由组合文本和图像,提供了类似Word的功能,如复制粘贴,使得内容创建更加便捷。这款编辑器的后端上传功能是基于PHP实现的,但其灵活性很高,可以轻松地适应ASP、ASP.NET或JAVA等其他服务器...
创建第一个Flex应用——编码模式创建第一个Flex应用——编码模式创建第一个Flex应用——编码模式
创建第一个Flex应用——设计模式创建第一个Flex应用——设计模式创建第一个Flex应用——设计模式
本文将围绕“FLEX入门篇——日期的格式化”这一主题,深入探讨如何在Flex中处理和格式化日期。日期格式化在任何应用程序中都是常见的需求,尤其是在展示或存储用户友好的时间信息时。 首先,我们要了解Flex中处理...
**ArcGIS Flex 示例详解——源码深度解析** ArcGIS Flex 是 Esri 公司提供的一款基于 Adobe Flex 技术的 GIS 开发框架,它允许开发者创建丰富的、交互式的地图应用程序,用于网页上展示地理信息。这个压缩包包含的...
这个标题“FLEX ——完美的 TREE”提到了FLEX在实现一个特定功能——TREE组件方面的卓越表现。TREE组件是FLEX中用于展示层次结构数据的关键元素,它允许用户以树形结构查看和操作数据,这在许多场景下都非常有用,...
"Flex从入门到实践——源代码(9章)"这个压缩包文件提供了学习Flex开发的实用资源,包含了9个章节的源代码示例,这些章节可能覆盖了Flex的基础到进阶内容。 1. **Flex基础**:Flex的基础知识通常包括Flex SDK的安装...
Flex是一种用于构建富互联网应用程序(RIA)的开放源码框架,它允许开发者创建交互性强、功能丰富的Web应用。数据绑定是Flex中一个核心的概念,它简化了用户界面与应用程序数据之间的通信,使得数据的更新能够自动...
本源代码由本人在书:flex基于actionscript源代码(适用Flex 3)基础上修改成适用于Flex 4.6, 修改部分测试通过(13、14章涉及Java,17、18章涉及hibernate,暂没做修改),是学习Flex的入门参考好资料
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语法——编程基础 http://download.csdn.net/source/1161756 Flex教程系列之(二) AS3语法——流程控制语句 http://download.csdn.net/source/1161804 Flex教程系列之(三) AS3语法——控制...