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

最近在项目中发现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. FastReport使用二——二维码

    以下内容在FastReport Designer 中测试通过,如下图所示: 在使用FastReport Designer创建一维吗也就是一般普通的条码时,设置其Barcode属性为Code128 (建 ...

  2. 打开SDK Manager检查Android SDK下载和更新失败的解决方法

    [故障描述] 打开SDK Manager检查Android  SDK状况,出现以下情况: Failed to fetch URL https://dl-ssl.google.com/android/r ...

  3. 【MySQL】性能优化 之 延迟关联

    [背景]  某业务数据库load 报警异常,cpu usr 达到30-40 ,居高不下.使用工具查看数据库正在执行的sql ,排在前面的大部分是: SELECT id, cu_id, name, in ...

  4. java处理日期时间

    java.util.Calendar Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR.MONTH.DAY_OF_MONTH.HOUR 等 日历字段之间的转换提供了一些方法,并为操作 ...

  5. 单选按钮选中js的处理

    function FinancialinfosetController($scope, $http, $timeout, $location, $rootScope, $routeParams) { ...

  6. BIP_开发案例01_BI Publisher报表手工提交和控制(案例)

    2014-12-27 Created By BaoXinjian

  7. linux命令(6)crontab的用法和解析

    一,写入格式: * * * * *   command minute   hour   day   month   week   command 其中: minute: 表示分钟,可以是从0到59之间 ...

  8. 转__Android Studio ,基于intellij idea

    看到论坛里一些关于Android Studio的帖子,基本上是停留在使用教程上.在此做一些功能性的分析和测评 下载地址 :http://developer.android.com/index.html ...

  9. 【jQuery】关于选择器中的 :first 、 :first-child 、 :first-of-type

    [:first] <!DOCTYPE html><html lang="zh-CN"><head>    <title>test&l ...

  10. MySQL 绿色版安装方法图文教程

    一.下载,这里使用绿色解压缩版 http://mirror.services.wisc.edu/mysql/Downloads/MySQL-5.1/mysql-noinstall-5.1.32-win ...