原创内容,如需转载,请注明出处,谢谢

最近在项目中发现Flex的DataGrid不支持内容复制,在涉及到保护敏感数据时倒是很有用处,但大部分情况下,我们还是希望客户能够直接复制DataGrid单元格中的内容进行快速操作,这个与用户体验背道而驰的问题一定要解决,因此想到直接自定义DataGrid的项呈现器来实现。

呆毛如下:

本来以为可以非常顺利,哪知居然给我碰到了一个BUG,网上查了查,也有不少童鞋们碰到了这个问题,不过似乎都没有有效的解决方案,这个主要是思维固化了,总认为官方的就一定是正确的。

FlashBuilder自定义DataGrid的项呈现器,默认代码就存在问题,即使什么都不改,运行时也会出现错误:

override public function prepare(hasBeenRecycled:Boolean):void
{
lblData.text = data[column.dataField];
}

 上面的默认代码一执行就会报错,问题就在于spark的项呈现器是提前生成好的,可重复使用来呈现数据,那么,当一个DataGrid创建时,会自动创建呈现器,尽管此时并没有数据(data=null),那么就会出现问题,data为空的情况下使用data[...]必然报错,所以以上的代码应改为:

override public function prepare(hasBeenRecycled:Boolean):void
{
if(super.data)
{
lblData.text = super.data[column.dataField];
}
}

 好了,解决了这个BUG,再来实现我的主要需求吧,为了能够复制单元格的内容,很明显必须将默认呈现器的Label组件替换成TextBase一类支持复制粘贴的组件,这里我使用的是RichEditableText组件,这个组件外观和Label几乎一样,唯一的问题在于可以修改内容,这个难不倒大家,直接editable=false关闭编辑功能即可,一行代码完工:

<s:RichEditableText id="lblData" left="7" top="9" right="0" focusedTextSelectionColor="0xFFFF66" editable="false" doubleClick="lblData.selectAll()" />

 任务达成,代码量简洁,放上来倒是不费力,最近一段时间写的组件实在是代码量太大,要放上来得花很多精力组织文章的结构,光想想就放弃了,我想这估计也是阻碍Flex推广的一个很大的问题所在。

Flex4 DataGrid实现可复制单元格,同时解决自定义GridItemRenderer出现1009错误的方法的更多相关文章

  1. EasyUI Datagrid 鼠标悬停显示单元格内容 复制代码

    EasyUI Datagrid 鼠标悬停显示单元格内容 ,halign:, align: 0 « 上一篇:LINQ to Entities 中的查询» 下一篇:去掉字符串中的非数字字符 posted ...

  2. 获取wpf datagrid当前被编辑单元格的内容

    原文 获取wpf datagrid当前被编辑单元格的内容 确认修改单元个的值, 使用到datagrid的两个事件 开始编辑事件 BeginningEdit="dataGrid_Beginni ...

  3. Easyui datagrid 设置内容超过单元格宽度时自动换行显示

    datagrid 设置内容超过单元格宽度时自动换行显示 by:授客 QQ:1033553122 测试环境 jquery-easyui-1.5.3 问题描述 单元格内容超过单元格宽度不会自动化换行.如下 ...

  4. easyUi datagrid鼠标经过提示单元格内容

    此文章是基于 EasyUI+Knockout实现经典表单的查看.编辑 一. jquery.cellTip.js /** * 扩展两个方法 */ using('datagrid', function() ...

  5. 【VBA】复制单元格数据有效性

    单元格内设置了有效性,通过VBA怎么去复制呢?代码如下: Public Sub 复制单元格批注() Dim range1 As range Dim range2 As range '清除G列 Colu ...

  6. 【VBA】复制单元格批注

    只复制单元格的批注该怎么操作呢?代码如下: Public Sub 复制单元格批注() Dim range1 As range Dim range2 As range '清除G列 Columns(&qu ...

  7. (转载)WPF:DataGrid设置行、单元格的前景色

    WPF:DataGrid设置行.单元格的前景色 0. 说明 /********************************** 本示例实现功能1.DataGrid基本操作2.列标题样式3.内容居中 ...

  8. zclip结合easyui实现复制datagrid每行特定单元格数据的功能

    在easyui的datagrid里面,实现复制每行特定单元格的功能,关键是想想如何获取到每个单元格的数据,功能是点击按钮"复制",然后复制object的下载地址,截图如下所示: 进 ...

  9. Easyui之datagrid实现点击单元格修改单元格背景颜色

    前段时间有个需求中有点击datagrid的单元格实现某种事件,调用datagrid的onclickCell这个方法很容易实现,但是体验不好啊,完全不知道自己刚才点击的是哪个单元格,然后就尝试单击单元格 ...

随机推荐

  1. Linux下编译OpenSSL

    编译环境 操作系统: Red Hat Enterprise Linux Server release 5.4 64-bit 编译工具: gcc (GCC) 4.1.2 20080704 (Red Ha ...

  2. Learning Puppet — Manifests

    Begin In a text editor — vim, emacs, or nano — create a file with the following contents and filenam ...

  3. CSS图片垂直居中方法

    让div里面的多行文本垂直居中的方法: div{height:100px;width:100px;border:solid 1px red;text-align:center; display:tab ...

  4. shell下root用户切换其他用户运行程序

    工作中,一些程序,需要随机启动,但是不是以root用户运行,于是需要在rc.local中通过shell,从root用户切换到其他用户运行程序,命令如下: su -c 'command' - user ...

  5. Flash AS 响应双击事件MouseEvent.DOUBLE_CLICK

    没想到在WinForm简简单单的一个问题,在AS里会成为一个坑. 我遇到的这个问题是由于Loader没有设置doubleClickEnabled=true而导致的. 因此出现这个问题,请思考是否由于此 ...

  6. spark1.4加载mysql数据 创建Dataframe及join操作连接方法问题

    首先我们使用新的API方法连接mysql加载数据 创建DF import org.apache.spark.sql.DataFrame import org.apache.spark.{SparkCo ...

  7. PLSQL_基础系列11_递归和层次查询CONNECT BY(案例)

    2015-05-31 Created By BaoXinjian

  8. HDU Count the string+Next数组测试函数

    链接:http://www.cnblogs.com/jackge/archive/2013/04/20/3032942.html 题意:给定一字符串,求它所有的前缀出现的次数的和.这题很纠结,一开始不 ...

  9. Axis2/c 知识点

    官网文档:  http://axis.apache.org/axis2/c/core/docs/axis2c_manual.html 从文档中可以总结出: 1. Axis2/C是一个用C语言实现的We ...

  10. ylbtech-Unitity-CS:Delegates

    ylbtech-Unitity-CS:Delegates 1.A,效果图返回顶部 Invoking delegate a: Hello, A! Invoking delegate b: Goodbye ...