`
cuixuxucui
  • 浏览: 351842 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

一个具有EXCEL风格的FLEX组件MecGrid

    博客分类:
  • Flex
阅读更多

前言:几个月前,因为项目需要探索了MecGrid,后来种种原因没有使用。网上的资料不是很多,特意放上来,有兴趣的一起交流学习。本文主要内容参考自MecGrid作者博客:http://www.mechansp.com/

一、主要特性

可以得到横纵列的索引

支持鼠标滚动

支持分成结构(即树形结构)

单元格自定义样式

同样具备dataProvider功能

导出excel文件格式(AIR专有)

支持过滤功能

单元格拖拽功能

多列排序功能

支持汇总

支持多单元格选中复制

支持动态添加行列

总之,在兼有FLEX DATAGRID特性的基础上,实现了一些EXCEL具有的基本功能。

二、使用方法

1、组件不开源,只能使用obfMecExporter.swcobfMecGridLib.swc。另外,作者博客上提供了一些不是很详细的API帮助。

2、使用MecGridWizard生成MecGrid脚本,参见manual_mecgrid_wizard.ppt

3、MecGridDemo对上述特性的使用提供了很好的范例。

上述文件全部放置于附件中,其中FLEX工程已使用FLEX BUILDER3+FLEX SDK3.2编译通过,请直接导入,或复制源代码到新建工程。

三、MecGridDemo简述

DataGrid Features

Large data

简述:一个最基本的MecGrid,展示了如何使用MecGrid脚本和对应的随机数据源。

Data Filtering

简述:展示了数据筛选特性,附带展示点选模式、拖拽、汇总特性。

问题:在MecGrid脚本中,直接指定EnableRowFilter="true"无法在运行时看到筛选特性,必须使用EnableRowFilter="{cboShowFilter.selected}"才有效。

Tree View

简述:展示了树型数据,附带展示是否采用电子表格风格(主要体现在添加行列标注)特性。需要注意的是,本例的MecGrid未采用<MecGrid:ResourceXML>脚本,而是由AS代码根据XML树型数据源进行创建的。

Event Viewer

简述:主要展示了不同操作触发的事件。同Tree ViewMecGrid也是根据输入行列值动态创建的。

Sorting

简述:主要展示排序特性,包括设置单行排序或多行排序。

DragDrop

简述:行列拖拽、单元格拖拽。

Dynamic Add Row/Col

简述:右键插入行列。在代码中展示了如何设置一个自定义的stylename,再通过监听进而判断是否支持编辑。额外说一下,stylename默认值是”normal”,我们可以在MecGrid的定义中指定属性beginEditCell="editCellHandler(event)" ,再定义函数private function editCellHandler(event:MecGridEvent):void{mgrid.EditCell(event, CellOp.EDIT_TEXT);}即可完成一个支持编辑的MecGrid。也就是说,仅仅在MecGrid定义中指定editable="true"、在column脚本指定editable="T"是不能使MecGrid可编辑的。

Clipboard Copy

简述:右键支持复制功能,顺便展示了selectionmode属性。

OLAP Analysis

Pivoting

简述:展示对OLAP类型数据的处理及如何获取当前MecGrid版本。

SPREADSHEET

SpreadSheet Indexing

简述:对单元格的操控,包括加粗倾斜下划线居中左右对齐字体颜色和简单的公式计算。

Calculator

简述:对列属性的设置。

SUMMARY

Sub totals

Grand totals

简述:汇总,可以调整汇总行位置。

Sample Report

Freeze Row Column

简述:冻结。

Cell Style

简述:针对单元格颜色和边框的设置

Editing Cell

简述:无

Entertainment

Grid MineSweep

简述:扫地雷游戏。

Map

Korea

简述:下载不到com.mechan.map包,无法运行。

四、使用心得

1、关于fixedmerge属性

fixed用来指定需要冻结的行列数,在脚本中以fixedrows="1" fixedcols="2"形式出现,相应的AS代码是mgrid.Rows.fixed=1;mgrid.Cols.fixed=2;这两个属性的默认值都是0。如果在某个column标签中定义了header属性,比如header="Visitors;1st Quater (A)",那么当fixedrows="1"时,冻结1行,内容为Visitors;当fixedrows="2"时,冻结2行,内容分别为Visitors;1st Quater (A);当fixedrows="3"或大于3时,冻结相应的行数所占空间,内容仍然为Visitors;1st Quater (A)

 

merge用来指定合并方式。需要特别注意的是,被fixed冻结的行列和其他行列是需要分别指定合并方式的。merge_option是一个int类型的值,可以是以下几个常量或常量和:

MecGridConst.MERGE_FIXED:int=4;

MecGridConst.MERGE_FREE:int=1;Merges only if next row value or column value is same

MecGridConst.MERGE_NONE:int=0;(默认值)

MecGridConst.MERGE_PREV:int=2;Merges if up cell or right cell is merged

MecGridConst.MERGE_UNDEFINED:int=5;

比如mgrid.merge_option = MecGridConst.MERGE_FIXED | MecGridConst.MERGE_PREV;

这种指定意味着普通行列采用PREV方式合并,而冻结行列将使用merge_option_fixedcolumnMerge rules on upper fixed row line)和merge_option_fixedrowMerge rules on left fixed column line)这两个具体属性进一步指定合并方式,如:

merge_option_fixedcolumn="2" merge_option_fixedrow="0"

相应AS代码是mgrid.merge_option_fixedcolumn=2;mgrid.merge_option_fixedrow=0;

另一个必须注意的是column脚本中的merge="T"merge="F",默认为F,相应的AS代码为mgrid.Cols.item(index).merge=true;只有在merge="T"的情况下,merge_option等相关属性的设置才会生效。

分享到:
评论
16 楼 凌吟儿 2012-04-06  
请教 楼主呀,mecGrid 是否可以打开一个excel 文件? 刚刚开始学习mecGrid 组件,看了楼主附件中的例子,没有发现可以打开一个excel文件的方法。公司现在有个需求要在浏览器中显示服务器端 poi 产生的excel对象,也就是一个excel文件。查了好多资料,貌似没有这样的flex 组件 , 是否只能自己写一个flex组件呀

希望多多交流

QQ:370679472
15 楼 langlang 2011-11-28  
mecgrid 基本是不能作为成熟的组件应用到项目的,自己玩玩还可以。
还是自己去实现吧~~~
14 楼 langlang 2011-11-28  
mecgrid 问题挺多的
最近写了2个表格组件 感兴趣的一起探讨下  flex新手 QQ279648954
http://blog.csdn.net/langyuezhang/article/details/7018019
http://blog.csdn.net/langyuezhang/article/details/7017916
13 楼 兰丽(川) 2011-02-24  
兰丽(川) 写道
怎么不能修改列呀?

已经能修改了,感觉也是蛮方便的哦!
12 楼 nulistudio 2011-01-12  
MecGrid缺点确实挺多,而且一些设置不太方便
11 楼 兰丽(川) 2011-01-05  
怎么不能修改列呀?
10 楼 ieRia_chen 2010-11-02  
你好,我用这个组件的时候遇到一些问题,希望与您交流,QQ:583223798
9 楼 qhitsky 2010-06-09  
看起来不错,弄回来研究研究!
多谢分享!
8 楼 ltian 2010-05-19  
这套东西开源吗?什么样的许可协议?
7 楼 tieshow 2010-04-12  
我以前也尝试过,单元格拖拽超卡,直接放弃掉
虽然flex 高级grid单元格拖拽也挺卡,但比这个顺溜多
6 楼 mncc 2010-04-01  
听说如果单元格内内容过多,单元格不会自动缩放放大,是真的吗?如果能解决怎么弄?能否直接生成Excel而不通过其他的代码啊?(比如说后台直接调用java用jxl生成excel)
5 楼 gosin 2010-03-18  
不是开源的。
之前用过一次,后来发现出现问题后,很难进行修改。
很无奈。
4 楼 robyjeffding 2010-03-18  
见图见真相。。。。
3 楼 yunzhongxia 2010-03-18  
MecGrid缺点还是挺多的。

1. 不支持itemrender。
2. 单元格选择时无法获知整行数据。(测试了好一会也没找到解决办法,不知道不能还是我没找出来)
3. 不支持xxxFunction设置。
4. 设置很不方便。在column设置中大量使用 number作为参数,非常非常的不利于使用,在线文档对这个ResourceXML的设置

推荐大家使用Nec Grid,http://yunzhongxia.iteye.com/admin/blogs/613451
2 楼 zxhfounder 2010-03-12  
貌似这个Grid控件的性能不太好,滚动的时候CPU占用率超高
1 楼 dunhuacc12 2010-03-12  
顶鹿哥 

相关推荐

    一个具有EXCEL风格的FLEX组件MecGrid使用帮助

    《使用MecGrid:一个Excel风格的FLEX组件详解》 在Adobe Flex开发中,有时候我们需要为用户界面创建类似Excel的表格组件,以便用户能够进行数据编辑和处理。MecGrid是一个优秀的开源组件,它提供了丰富的功能,如...

    flex导出复杂excel

    AdvancedDataGrid导出复杂表头excel

    Flex 组件Flex 组件Flex 组件

    每个Flex组件都是一个继承自UIComponent的类,拥有自己的生命周期、样式和事件处理机制。例如,Button组件用于响应用户的点击动作,Label组件用于显示静态文本,而List组件则可以展示可选择的项目列表。 Flex组件的...

    在FLEX中使用MecGrid的excel导出功能

    首先,MecGrid是一个针对Adobe Flex的开源组件库,它提供了丰富的表格控件和数据处理能力,其中包括Excel文件的导出。通过使用MecGrid,开发者可以轻松地将Flex应用中的数据转换为Excel工作簿格式,方便用户下载。 ...

    Flex中组件datagrid导出Excel

    DataGrid是Flex中常用的一个组件,它用于展示结构化数据,通常用于表格形式的展示。在Flex中,我们可以通过编程方式来实现DataGrid的数据导出,将其中的数据转换成Excel文件。这个过程涉及到的主要知识点包括Flex...

    flex组件介绍

    工具提示是Flex组件的一个重要特性,它允许在用户悬停于某个控件上时显示额外的信息。这有助于增强用户体验,使应用程序更加友好和直观。工具提示可以通过设置控件的`toolTip`属性来实现,该属性可以接受字符串或...

    flex组件详细介绍

    以下是一个简单的Flex布局示例,展示了一个居中对齐的两列布局: ```html 左侧 右侧 ``` ```css .container { display: flex; justify-content: center; /* 主轴居中 */ align-items: center; /* 侧轴居中 ...

    Flex 组件全屏的组件

    这个是我一直在用的针对于组件全屏的一个类,这里是页面上的某个组件全屏,而不是整个页面全屏。 这是原始的库了,里面少了一个针对按下ESC键的处理,这个在使用的时候可以自己加,另外一个问题就是由于这个库是FLEX...

    Flex组件风格预览程序3in1

    Flex组件风格预览程序3in1是一款集合了Flex2和Flex3组件风格预览功能的实用工具,对于学习和理解Flex界面设计具有极大帮助。这个3合1的程序集成了Flex2PrimitiveExplorer、Flex2FilterExplorer和Flex3StyleExplorer_...

    flex mecgrid导出excel工具包

    flex MecExporter(2).swc MecExporter(2).swc

    flex组件时间轴组件

    2. **时间轴线**:时间轴线通常是一个垂直的中心线,可以通过在容器内创建一个具有固定宽度的元素,并设置其`justify-content: center`来实现。线的颜色和样式可以根据设计需求进行自定义。 3. **时间点**:时间点...

    flex开源数据控件MecGrid

    Flex开源数据控件MecGrid是一款...总之,MecGrid是Flex开发中的一个强大补充,尤其适合那些需要处理复杂数据展示和交互的项目。其开源特性不仅降低了开发成本,也鼓励了社区的创新与协作,为Flex开发者提供了更多可能。

    flex组件,功能强大的下拉框

    在本项目中,我们关注的是一个特定的Flex组件——"功能强大的下拉框"。这个自编的Flex下拉框组件设计用于提供丰富的功能,如多级级联选择,这在数据层级结构复杂的应用场景中尤为有用。 1. **Flex布局基础** Flex...

    Flex各自定义组件事件通讯例子

    1. 组件创建:首先,你需要创建一个新的ActionScript类,继承自Flex的基础组件类,如Spark的SkinnableComponent或MX的Canvas。 2. 组件属性:定义组件的属性,用于设置和获取组件的状态,例如在登录组件中,可能有...

    Flex的组件

    Flex提供了丰富的组件库,这些组件都继承自一个基础组件类,称为UIComponent。通过使用这些组件,开发者可以快速创建复杂的用户界面,而无需从头编写底层代码。 在Flex中,MXML是一种声明式标记语言,它允许开发者...

    flex air 导出 excel

    在压缩包中,"library.swf"可能是一个Flex组件库,包含了一些用于构建Flex应用程序的预编译组件。而"catalog.xml"可能是这个库的清单文件,列出了库中所有可用的组件和它们的元数据。这两个文件在实现上述导出Excel...

    flex组件

    标题中的“flex组件”指的是在前端开发中广泛使用的Flex布局技术。Flex布局,全称Flexible Box,是一种用于处理容器中子元素布局的CSS3模块。它允许开发者在不同尺寸的设备上灵活地调整元素的大小和位置,尤其适用于...

    【完美翻译】Flex组件的生命周期

    Flex组件的生命周期是Adobe Flex框架中一个至关重要的概念,它涉及到UIComponent类及其子类(如Button、Canvas等)在创建、初始化、显示和销毁过程中的各个阶段。深入理解组件生命周期有助于开发者更有效地管理组件...

    Flex 组件边框线样式

    Flex组件边框线样式是前端开发...综上所述,Flex组件边框线样式是一个多维度的设计概念,涵盖边框、标题、内容区域以及与之相关的交互反馈和响应式设计。熟练掌握这些技巧,可以让你创建出既美观又功能强大的Flex应用。

    Flex 分页组件,flex自定义组件

    7. **兼容性和扩展性**:一个优质的Flex分页组件应具备良好的兼容性,适应各种Flex版本和环境,并且设计应考虑到未来的扩展,如添加新的功能或与其他组件集成。 在“FlexPaging”这个文件中,可能包含了实现以上...

Global site tag (gtag.js) - Google Analytics