免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2566 | 回复: 1
打印 上一主题 下一主题

java只需一个查询生成xml树传至flex绑定tree [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-15 21:54 |只看该作者 |倒序浏览

java只需一个查询生成xml树传至flex绑定tree












1.本人用的是blazeds进行flex与java通信的,昨天研究了一天的树绑定,有用arraycollection来绑定,但这需要java端arraylist的时候每一个子节点必须加一个children,感觉很繁琐,还有就是直接在java端生成xml字符串,传至flex端进行强制转换成xml与tree绑定。前奏就不必多说,直奔主题:
首先介绍本人数据表的设计,
name,level
成都    1
武侯区  1.1
青羊区  1.2
锦江区  1.3
金牛区  1.4
成华区  1.5
上东锦城 1.3.1这样设计表结构的目的就是为了一次性查询出树的所有节点信息,且排序直接生成树

java代码:



Java代码
  1. 1.StringBuffer sb = new StringBuffer();   
  2. 2.int i = -1;   
  3. 3.try {   
  4. 4.//查找该节点下所有子节点   
  5. 5.List<Contactgroup> list = contactgroupDao.findByHql(ContactgroupDao.FIND_BY_LEVEL, level + "%");   
  6. 6.for(Contactgroup group : list) {   
  7. 7.int j = group.getLevel().split("\\.").length;   
  8. 8.if( j > i){   
  9. 9.sb.append("<item name=\""+group.getGngName()+"\" value=\""+group.getLevel()+"\">\n");   
  10. 10.}else{   
  11. 11.for(int k = -1;k < i - j;k++){   
  12. 12.sb.append("</item>\n");   
  13. 13.}   
  14. 14.sb.append("<item name=\""+group.getGngName()+"\" value=\""+group.getLevel()+"\">\n");   
  15. 15.}   
  16. 16.i = j;   
  17. 17.}   
  18. 18.//最后一个j为0   
  19. 19.for(int m = 0;m < i;m++){   
  20. 20.sb.append("</item>\n");   
  21. 21.}   
  22. 22.} catch (Exception e) {   
  23. 23.e.printStackTrace();   
  24. 24.}   
  25. 25.return sb.toString();  
复制代码
里面的循环我相信程序猿都能看懂吧!
我查询按照level来排序,查询结果:
name,    level
成都        1
武侯区      1.1
青羊区      1.2
锦江区      1.3
上东锦城    1.3.1
金牛区      1.4
成华区      1.5
这样以来一目了然了吧,直接按顺序生成树!
flex端:
Java代码



Java代码
  1. 1.<mx:Script>   
  2. 2.<![CDATA[   
  3. 3.public function loadTree():void{   
  4. 4.    this.contactAction.findSubgroup("1");   
  5. 5.   }   
  6. 6.    public function findSubgroupResult(e:ResultEvent):void{   
  7. 7.    var arr:XMLList=XMLList(e.result);//把结果转化成XMLList   
  8. 8.    this.tree.dataProvider=arr;   
  9. 9.   }   
  10. 10.   //展开树   
  11. 11.            private function tree_itemClick(evt:ListEvent):void {   
  12. 12.                var item:Object = Tree(evt.currentTarget).selectedItem;   
  13. 13.                if (tree.dataDescriptor.isBranch(item)) {   
  14. 14.                    tree.expandItem(item, !tree.isItemOpen(item), true);   
  15. 15.                }   
  16. 16.                Alert.show(item.@value);   
  17. 17.            }   
  18. 18.  
  19. 19.]]>   
  20. 20.</mx:Script>   
  21. 21.  
  22. 22.<mx:Tree id="tree"   
  23. 23.            itemClick="tree_itemClick(event);"   
  24. 24.            labelField="@name"   
  25. 25.            labelFunction="tree_labelFunc"   
  26. 26.            creationComplete="loadTree()"   
  27. 27.            top="30" bottom="0" left="0" width="142"   
  28. 28.            backgroundColor="#FDFDFD" />   
  29. 29.  
  30. 30.   
复制代码

论坛徽章:
0
2 [报告]
发表于 2012-03-15 21:54 |只看该作者
谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP