系统名
分类一
小分类1
a,......
分类二
小分类1
小分类2
a,......
分类三
我用的AdvancedDataGrid,只能实现两层分类,能不能实现多层的分类,有人用过吗?就是这样,只能实现两层<mx:Grouping >
<mx:GroupingField name="parentId"/>
<mx:GroupingField name="id"/>
</mx:Grouping>
效果是这样的:
系统名
分类一
分类二
分类三
分类一
小分类1
分类二
小分类1
小分类2
分类三
小分类1
a,......
我的问题:用AdvancedDataGrid能不能实现多层树型结构,怎样实现?有没有什么可行方法?
另外,如果是用“左边一个Tree,右边一个grid”这种组合的方式就不用说了,这种方式,我也想到了,只是不想用它。
望有这方面的经验的人,指点一下。谢谢。
9 个解决方案
#1
http://flexlib.googlecode.com/svn/trunk/examples/TreeGrid/TreeGrid_Sample.swf
#2
看过了,效果不错,这是什么组件呀,看着好像是grid之类的组件?是官方的还是自己写的,<mx:Grouping >
</mx:Grouping>
是怎么写的?能否把源码中比较关键的地主给透露一下?偶以前的号,结帖率100%呢,你放心,偶只要关键的代码就行了。
#3
又研究了一下,找到它的部分源码,它是这样的:
<flexlib:columns>
<flexlib:TreeGridColumn dataField="name"/>
<mx:DataGridColumn dataField="desc"/>
</flexlib:columns>
不过,它的那个组件<flexlib:TreeGrid,我没有找到在哪下载,看来仅使用官方的组件是不能实现了,需要自己 写组件了,
<flexlib:columns>
<flexlib:TreeGridColumn dataField="name"/>
<mx:DataGridColumn dataField="desc"/>
</flexlib:columns>
不过,它的那个组件<flexlib:TreeGrid,我没有找到在哪下载,看来仅使用官方的组件是不能实现了,需要自己 写组件了,
#4
http://code.google.com/p/flexlib/wiki/ComponentList
这个是开源的
这个是开源的
#5
用TREE控件很简单
#6
找到swc文件了,现在就剩下写MySQL的递归查询了,3Q。
#7
非常郁闷,用这个控件,基本的功能都实现了,但是它都没有定义事件。我现在有个需求,当添加一条新数据时,我从表中再重新读一次,读完再把这个treeGrid按照以前打开的还是打开,关闲的还是关闭。我在刷新前先保存它的openItems列表,这一步没有问题,然后再遍历一下,如果在这里面的就再次打开。问题就在这个打开函数里呢,我查了一下文档,TreeGrid只有一个openItemAt(rowNum:Number, item:Object = null):void方法,可是我怎么知道它的rowNum?也看它的源码了,没找到可行方法,不知各位用的是时候用到这个东西了吗?
顺便说一下,flex的东西真的好多不成熟,一些开源的东西,如果时间比较紧迫,文档又不全,轻易不要用,不仅自己用着郁闷,别人维护时也浪费时间。
顺便说一下,flex的东西真的好多不成熟,一些开源的东西,如果时间比较紧迫,文档又不全,轻易不要用,不仅自己用着郁闷,别人维护时也浪费时间。
#8
后来问了一下以前的同事,直接advancedDataGrid就能搞定了,有一个treeCulumn属性。看api看不少了,浪费了不少时间。
#9
今天在网上查rowNum找到了这个帖子:
后来自己尝试后终于成功实现了treegrid的打开,rowNum从零开始,每打开一个就加上openItemAt的返回值即可实现遍历打开。
后来自己尝试后终于成功实现了treegrid的打开,rowNum从零开始,每打开一个就加上openItemAt的返回值即可实现遍历打开。
var rowNum:int=0;
for(var j:int=0;j<dp.length;j++){
if(isOpenArray[j]==true&&dp.getItemAt(j).children!=null){
rowNum = rowNum + treeGrid.openItemAt(rowNum);
} rowNum=rowNum+1;
treeGrid.invalidateList();
}
#1
http://flexlib.googlecode.com/svn/trunk/examples/TreeGrid/TreeGrid_Sample.swf
#2
看过了,效果不错,这是什么组件呀,看着好像是grid之类的组件?是官方的还是自己写的,<mx:Grouping >
</mx:Grouping>
是怎么写的?能否把源码中比较关键的地主给透露一下?偶以前的号,结帖率100%呢,你放心,偶只要关键的代码就行了。
#3
又研究了一下,找到它的部分源码,它是这样的:
<flexlib:columns>
<flexlib:TreeGridColumn dataField="name"/>
<mx:DataGridColumn dataField="desc"/>
</flexlib:columns>
不过,它的那个组件<flexlib:TreeGrid,我没有找到在哪下载,看来仅使用官方的组件是不能实现了,需要自己 写组件了,
<flexlib:columns>
<flexlib:TreeGridColumn dataField="name"/>
<mx:DataGridColumn dataField="desc"/>
</flexlib:columns>
不过,它的那个组件<flexlib:TreeGrid,我没有找到在哪下载,看来仅使用官方的组件是不能实现了,需要自己 写组件了,
#4
http://code.google.com/p/flexlib/wiki/ComponentList
这个是开源的
这个是开源的
#5
用TREE控件很简单
#6
找到swc文件了,现在就剩下写MySQL的递归查询了,3Q。
#7
非常郁闷,用这个控件,基本的功能都实现了,但是它都没有定义事件。我现在有个需求,当添加一条新数据时,我从表中再重新读一次,读完再把这个treeGrid按照以前打开的还是打开,关闲的还是关闭。我在刷新前先保存它的openItems列表,这一步没有问题,然后再遍历一下,如果在这里面的就再次打开。问题就在这个打开函数里呢,我查了一下文档,TreeGrid只有一个openItemAt(rowNum:Number, item:Object = null):void方法,可是我怎么知道它的rowNum?也看它的源码了,没找到可行方法,不知各位用的是时候用到这个东西了吗?
顺便说一下,flex的东西真的好多不成熟,一些开源的东西,如果时间比较紧迫,文档又不全,轻易不要用,不仅自己用着郁闷,别人维护时也浪费时间。
顺便说一下,flex的东西真的好多不成熟,一些开源的东西,如果时间比较紧迫,文档又不全,轻易不要用,不仅自己用着郁闷,别人维护时也浪费时间。
#8
后来问了一下以前的同事,直接advancedDataGrid就能搞定了,有一个treeCulumn属性。看api看不少了,浪费了不少时间。
#9
今天在网上查rowNum找到了这个帖子:
后来自己尝试后终于成功实现了treegrid的打开,rowNum从零开始,每打开一个就加上openItemAt的返回值即可实现遍历打开。
后来自己尝试后终于成功实现了treegrid的打开,rowNum从零开始,每打开一个就加上openItemAt的返回值即可实现遍历打开。
var rowNum:int=0;
for(var j:int=0;j<dp.length;j++){
if(isOpenArray[j]==true&&dp.getItemAt(j).children!=null){
rowNum = rowNum + treeGrid.openItemAt(rowNum);
} rowNum=rowNum+1;
treeGrid.invalidateList();
}