- 浏览: 556187 次
博客专栏
-
开源视频会议bigblue...
浏览量:86542
文章分类
最新评论
-
qq632680822:
你好,请问第八条sql优化最佳实践中from 子句--执行顺序 ...
高效sql性能优化极简教程 -
tan_zheng:
大神 ,为什么我没有 bbb-conf --setup-dev ...
开源视频会议bigbluebutton开发(4)——构建开发环境,客户端开发 -
lixuejian:
6666666
过年了,让你的服务器提高警惕! -
tonney:
直播直播直播
直播技术视频教程分享 -
GYHui881204:
直播
直播技术视频教程分享
Flex Tree和其他控件的联动
首先图下面的数据列表需要根据树中点击的不同项来动态生成,因为的不同项显示的内容是不一样的。这里主要讲一下树和显示列表的联动,即:点击树的另外节点时 TabNavigator应该切换到该节点对应的数据列表,而在TabNavigator中切换的时候,Tree中选择的节点也做相应的切换。
1.树控制控件
private function onTreeChange(event:ListEvent):void
{
var itemIsBranch:Boolean = inforTree.dataDescriptor.isBranch(inforTree.selectedItem);//判断是否为根节点
if(itemIsBranch) //根节点
{
//如果是上一次点击过的根节点
if(openedItem==inforTree.selectedItem)
{
return ;
}
openedItem=inforTree.selectedItem;
var length:int= inforTree.dataDescriptor.getChildren(event.itemRenderer.data).length;
var xml:XML=event.itemRenderer.data as XML;
var xmllist:XMLList=xml.children().attribute("Text"); //Text属性
var leafcd:String=xml.attribute("leaf_cd"); //编号
var tablename:String=xml.attribute("leaf_tablename");//表名
var type:XMLList=xml.children().attribute("sub_tablename"); //类型
this.iforTab.removeAllChildren(); //先清除上次TabNavigator中的子控件
for(var i:int=0;i<xmllist.length();i++)
{
creatCanvas(xmllist[i].toString(),i,type[i].toString(),leafcd,tablename);//创建显示列表的方法
}
iforTab.selectedIndex=0;
}else //子节点
{
var tempTree:Tree=Tree(event.target);
var obj:Object= tempTree.getParentItem(inforTree.selectedItem); //获取该子节点对应的父节点
var o:XML=inforTree.selectedItem as XML;
var name:String=o.attribute("Text");
if(openedItem==obj)
{
//如果是同一个父节点下的字节点
iforTab.selectedIndex=iforTab.getChildIndex(iforTab.getChildByName(name)); //切换TabNavigator中显示的列表
return ;
}
openedItem=obj;
var xml2:XML=obj as XML;
var xmllist2:XMLList=xml2.children().attribute("Text");
var leafcd2:String=xml2.attribute("leaf_cd"); //编号
var tablename2:String=xml2.attribute("leaf_tablename");//表名
var type2:XMLList=xml2.children().attribute("sub_tablename"); //类型
this.iforTab.removeAllChildren();
for(var j:int=0;j<xmllist2.length();j++)
{
creatCanvas(xmllist2[j].toString(),j,type2[j].toString(),leafcd2,tablename2);
}
index=iforTab.getChildIndex(iforTab.getChildByName(name));
//设置Tab的第一个项为当前显示的项
inforTree.callLater(setIndex);
}
}
//设置TabNavigator当前显示的位置
private function setIndex():void
{
iforTab.selectedIndex=index;
}
//创建TabNavigator的子项
private function creatCanvas(text:String,index:int,type:String,leafcd:String,tableName:String):void
{
var userdg:userDataGrid=new userDataGrid(); //自定义的数据显示控件
userdg.hs=this;
userdg.name=text;
userdg.type=type;
userdg.table_name=tableName;
userdg.leafcd=leafcd;
userdg.width=this.iforTab.width;
userdg.height=this.iforTab.height;
userdg.label=text;
this.iforTab.addChildAt(userdg,index); //自定义的数据显示控件添加到TabNavigator中的index处
}
到此为止,树控制控件已经实现,接下来是控件控制树
2.控件控制树
实现方法是,找出控件对应关联的节点在整个数据源中的位置,然后通过设置树的selectedIndex属性来实现。
private function onIndexChange(event:IndexChangedEvent):void
{
var name:String=event.relatedObject.name;//tab的名字
var arrText:XMLList=openedItem.products; //当前树中点击的父节点
var openX:XML=openedItem as XML;
var openedIndex:int=openX.childIndex(); //当前父节点所在整个xml数据源中的位置
//父节点的位置
var itemInd:int;
for(var i:int=0;i<openedIndex;i++)
{
itemInd+=(M_xml[i]as XML).children().length();//M_xml为树的数据源,这里获取到openedItem兄弟节点下的子节点数
}
itemInd+=openedIndex; //加上父节点占的位置
//子节点的位置
var leafIndex:int;
for(var j:int=0;j<arrText.length();j++)
{
if(arrText[j].@Text==name)
{
leafIndex=++j;
}
}
this.inforTree.selectedIndex=itemInd+leafIndex;
}
到此此功能成功实现,树的子节点层数不同代码会有所不同,但是思路是正确的。
发表评论
-
flex二维单列或者多列冒泡排序
2012-07-19 10:21 1466第一次循环,把二维数组中的一维数组的第一个元素最小的那一组放在 ... -
flex任意样式生成器
2012-07-11 13:35 1409flex任意样式生成器,各种风格,颜色,布局等等 -
flex任意多边形代码生成器
2012-07-11 13:29 1391flex任意多边形代码生成器,圆,多边形,星形代码生成器 ... -
flex任意多边形代码生成器
2012-07-11 13:22 1下面是flex任意多边形代码生成器, 在附件中 -
flex点到线段的距离
2012-06-27 15:17 1449// 计算两点之间的距离 private fu ... -
开心农场前端程序源码
2012-06-20 13:05 3108开心农场前端程序源码,界面: 源码附件中 -
flex 多级窗口互调连接oracle动态管理生成动态datagrid
2012-06-15 14:35 23316废话不多说,直接上代码讲解: 首先是对datagrid的管理界 ... -
flex中dictionary跟Object的区别与遍历
2012-06-12 10:09 1875flex中dictionary跟Object的区别与遍历 ... -
Array的复制
2012-04-26 10:57 931ActionSctipt中Array的复制方法,常用有 ... -
mx_internal_uid的在数据传递时的重复解决方法 - 两个datagrid直接拖拽复制数据
2012-04-12 16:12 1252我们首先了解一下【mx_internal_ui ... -
Flex的Array和ArrayCollection总结
2012-04-11 02:56 1532Flex的Array和ArrayCollecti ... -
flex中dictionary跟Object的区别与遍历
2012-04-11 02:55 1820AS3中Object和 Dictionary都可以用来 ... -
flex object 联合数组
2012-04-11 02:53 1903问题我要创建用名称元素作为索引的数组解决办法创建联合数组 ... -
flex数据基础 array和arraycollection
2012-04-11 02:50 1438Flex数据基础-Array与ArrayCollecti ... -
flex button字竖排显示
2012-04-10 15:48 3496由于产品功能的要求,需要让按钮Label垂直显示,看了 ... -
flex titilewindow
2012-04-10 15:49 1071利用popupmanager两种创建titlewindow的方 ... -
flex弹出窗口的方式有几种
2012-04-10 14:44 14010Flex 中有两种弹出窗口: 1. 最简单的警告窗口 你需 ...
相关推荐
去掉flex tree控件默认的图标并加上线连接。
里面收集了一些Flex的tree控件的用法和实例的源代码
flex tree 复选框,以及父目录的三种状态。(全部选中,部分选中,没有选中)
flex tree 教程二
flex tree+checkbox可实现级联勾选
在原来flex的Tree组件上添加复选框CheckBox
flex tree 拖拽,flex tree 节点移动。
这是一个基于Adobe Flash Builder 4开发的Flex多文件上传控件,这个是Flex源码,asp.net调用Flex的源码在另一个附件里
flex 修改 tree的icon,根据数据源root 中不同的参数修改不同的图片。
本资源中包括Tree的文件和Tree的渲染文件(Checkbox),实现功能为点击树不获取值(也可以获取,改变一个变量即可),只有勾选Checkbox才能得到。并添加到集合中
在网上找到了关于flex 的tree在前面加上checkbox, 我经过改动, 现在很适合使用。
flex带复选框的tree,包含源代码,需要用到的朋友请下载
一个自定义的拖拽flex控件,可以实现复制拖拽,不复制拖拽,可以拖拽图片,也可以由文字拖拽后变成图片。
flex tree+checkbox可实现级联勾选 修改后 修改CheckTreeDemoRenderer.as这个文件中 while (!cursor.afterLast){ if (cursor.current.@state == STATE_CHECKED) { noChecks++; }else if (cursor.current.@state =...
FLEX控件
Flex 自定义 时间 日历 控件
flex控件事件flex控件事件flex控件事件flex控件事件
flex中tree和checkbox结合使用的插件,该压缩包包含两个文档,一个是tree和checkbox结合使用的插件,另一个是使用示例
快速定位输入结点名称,点击“检索”后打开树中对应结点
针对flex新手熟悉flex 4.0以上版本控件