首页 > 设计 > WEB开发 > 正文

13.7.创建HierarchicalViewCollection对象

2023-07-22 12:39:12
字体:
来源:转载
供稿:网友
13.7.1. 问题
我想创建一个集合,它能让我把IHierarchicalData 对象当作集合处理。
13.7.2. 解决办法
创建一个实现IHierarchicalData 接口的类用于检测每个节点的父节点和子节点。创建一个HierarchicalCollectionView 对象,传递IHierarchicalData 对象作为HierarchicalCollectionView类构造器的参数。
13.7.3. 讨论
默认情况下, 要使用HierarchicalData , AdvancedDataGrid 需创建一个HierarchicalCollectionView。HierarchicalCollectionView 允许AdvancedDataGrid 接收一个ArrayCollection,应用所有方法到HierarchicalData。这不仅仅对于AdvancedDataGrid 很有用,而且对于使用自定义组件显示层级数据时也很有用。第13.5节实现IHierarchicalData 接口的ObjectHierarchicalData 类提供检测不同节点之间的父节点和子节点关系。

HierarchicalCollectionView 类使用这些方法更直观的打开和关闭节点,以及检测数据对象是否包含特定的数值。这一节使用ObjectHierarchicalData 创建HierarchicalCollectionView 实例对象。

HierarchicalCollectionView 的方法有:
addChild(parent:Object, newChild:Object):Boolean
为数据的节点添加子节点.

addChildAt(parent:Object, newChild:Object, index:int):Boolean
将子节点添加到指定索引处的节点

closeNode(node:Object):void
关闭要隐藏其子项的节点

contains(item:Object):Boolean
C 使用标准相等测试检查数据项目的集合,这意味着不同内存中的数据即便有相同值测试结果也不会返回true。

createCursor():IViewCursor
返回此视图中有关项目的视图迭代器的新实例。

getParentItem(node:Object):*
返回节点的父节点

openNode(node:Object):void
打开要显示其子项的节点

removeChild(parent:Object, child:Object):Boolean
从父节点删除子节点

removeChildAt(parent:Object, index:int):Boolean
从指定索引处的节点删除子节点

确定哪个节点被操作取决于IHierarchicalData 接口的getData 方法是否有良好的实现方法。

把键值对的对象传入getData 方法,返回包含相同键值对的节点。HierarchicalCollectionView可检测源数据对象中哪个对象将被操作。这里定义了层级数据对象, 传递一个HierarchicalData 对象,创建HierarchicalCollectionView:
+展开
-ActionScript
var largeObject:Object = [{ id:"1", name:"Misc", type:"parent", parentTask:"0"},
{id:"2", name:"Clean the kitchen", type:"parent",
parentTask:"0"},
{id:"3", name:"Pay the bills", type:"parent", parentTask:"0"},
{id:"4", name:"Paint the shed", type:"parent", parentTask:"1"},
{id:"5", name:"Get ready for party", type:"parent",
parentTask:"1"},
{id:"6", name:"Do the dishes", type:"child", parentTask:"2"},
{id:"7", name:"Take out trash", type:"child", parentTask:"2"},
{id:"8", name:"Registration", type:"child", parentTask:"3"},
{id:"9", name:"Fix the car", type:"parent", parentTask:"0"},
{id:"10", name:"New tires", type:"child", parentTask:"9"},
{id:"11", name:"Get new paint", type:"child", parentTask:"4"},
{id:"12", name:"Buy Drinks", type:"child", parentTask:"5"},
{id:"13", name:"finish invitations", type:"child",
parentTask:"5"}];
/* create a new class that implements the IHierarchicalData
interface */

var dataObj:ObjectHierarchicalData =
new ObjectHierarchicalData(largeObject);
/* pass that class to the HierarchicalCollectionView class*/
var hCollView:HierarchicalCollectionView = new
HierarchicalCollectionView(dataObj);
hCollView.openNode(largeObject[2]);
var ac:ArrayCollection =
hCollView.getChildren( hCollView.source.getData({id:"3"}));
hCollView.closeNode(hCollView.source.getData({name:"Pay the bills"})

HierarchicalViewCollection 包装了IHierarchicalData 视图对象,通过getChildren 方法基于集合对象创建视图。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表