update Flex TreeGrid
Summary:
在DataGrid中显示层级结构,google了一下,找到flexlib中的TreeGrid。把源码加载到项目中,按照文档去实现其功能。最后发现有好多bug,比如定位不准,无法拖动等问题。通过阅读和修改TreeGrid类,这些bug都解决了。接着无意中发现,排序有问题。点击列头排序,发现层级结构变混乱了,这个问题比较严重。因为create dataProvider是最核心的内容了。在开源社区(Sapience360 )上找到了另外一个TreeGrid,但版本有点老了,不支持flex2.0以上。
Requirement: 使treeGrid支持flex 2.0以上。
Solution:
对比SDK 1.5 和 SDK 3.2 DataGrid源码发现,TreeGrid 的placeSortArrow() 方法应该修改一下。可以直接调用DataGridHeader类的方法。
override protected function placeSortArrow():void
{
DataGridHeader(header).mx_internal::_placeSortArrow();
}
删除无用的变量 如下:
/**
* @private
* The index of the column being sorted.
*/
private var sortIndex:int = -1;
* @private
* The direction of the sort
*/
private var sortDirection:String;
/**
* @private
* The index of the last column being sorted on.
*/
private var lastSortIndex:int = -1;
==============================================
修改后的TreeGrid.as 类如下:
package org.osflex {
import flash.display.DisplayObject;
import flash.display.Graphics;
import flash.display.Sprite;
import flash.events.Event;
import mx.collections.IViewCursor;
import mx.controls.DataGrid;
import mx.controls.dataGridClasses.DataGridColumn;
import mx.controls.dataGridClasses.DataGridHeader;
import mx.core.EventPriority;
import mx.core.FlexSprite;
import mx.core.IFlexDisplayObject;
import mx.core.mx_internal;
import mx.events.DataGridEvent;
use namespace mx_internal;
[IconFile("/assets/treegrid.png")]
/**
* A DataGrid that allow
相关文档:
只是简单实现了一下计算。主要是练下手。
实现了鼠标跟键盘的事件响应。
-----------------------------
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
width="198" height="224" fontSize="12" themeColor="#4D8853" borderColor="#B1C2CE" backgroundGradientAlphas="[1.0, 1. ......
<mx:TextInput id="userName" maxChars="4" restrict="a-zA-Z" />
restrict属性确实可以输入正则表达式,进行输入的验证。
但是在程序执行的时候如果为userName.text = "999"还是可以成功的。
待续。。。。学习中。。。 ......
最近遇到个问题,开发web项目的时候,可能flex只用来实现项目的部分模块。当flex需要在客户端写入/读取一些状态信息的时候,我们会想到用cookie。flex是不支持cookie的,只有SharedObject这个本地对象。所以解决的办法就有两个:
flex通过调用js来实现对cookie的操作;
js通过flex实现对SharedObject的操作;
这两种方法 ......
Summary(概述): Adobe Flex 的 dataGrid 有很强大的功能,比如ItemRenderer,headerRenderer等,可以方便地实现自己想要的功能。但对dataGrid直接编辑并保存到Service端,就有点麻烦了。
Requirement(需求): 对dataGrid进行单位格编辑,若有变化,保存到Service; 否则不保存。
Solution(解决方案): 运用DataGrid 的  ......