charles751 发表于 2013-1-29 09:34:17

xtree应用实例

最近项目中用到了构造树形目录的功能,简单了解了下dtree和xtree,很多年前就用过dtree,但xtree了解不多,自己没有实际用过。之前一期项目中有相关的代码,为了加快进度就直接拿过来参考,期待能参考个较完善的版本,结果使用中还是遇到了几个问题:
1.子节点名称和父节点名称相同的部分不显示。
2.之前的代码只用到了两级目录,需要修改为支持无限级目录。
3.代码质量不高,并且排版凌乱。
 
问题解决:
1.有同事熟悉js,直接修改了xloadtree2.js中第340行
jsNode.setText(jsAttrs.text.replace(vvv.trim(),""));替换为:jsNode.setText(jsAttrs.text); 
2.节点显示之前,先判断该节点有无子节点,如果有则显示为目录,没有则显示“无下级目录”。
3.代码是否整理和重构,目前我的观点是完全取决于项目的时间周期的紧迫程度。如果项目进度紧张,则先实现功能即可,时间充裕的时候再整理。
 
代码参考:
<script type="text/javascript">var tree = new WebFXLoadTree("项目", "basedata_tree.jsp?level=0&&newtime=<%=new java.util.Date()%>","");tree.write();tree.expand();</script> 
basedata_tree.jsp
<?xml version="1.0" encoding="GBK"?><%@ page contentType="text/xml;charset=GBK"%><%@ page import="java.util.*"%><jsp:directive.page import="com.dhcc.rt.baseData.service.BaseDataMgrService"/><jsp:directive.page import="com.dhcc.common.BaseMgr"/><jsp:directive.page import="com.dhcc.common.util.StringUtil"/><%request.setCharacterEncoding("GBK");%><%String level = request.getParameter("level") == null ? "" : request.getParameter("level");String baseDataID = request.getParameter("baseDataID") == null ? "" : request.getParameter("baseDataID");//level = "2";//baseDataID = "6442F8803EDF423AA50A2A439BBD482E";BaseDataMgrService baseDataMgr = (BaseDataMgrService)BaseMgr.getBean("baseDataMgr");List list = null;if(level.equals("0")){ list = baseDataMgr.findBaseData("","tree");}if(!level.equals("0")){list= baseDataMgr.findBaseData(baseDataID,"tree");}int ilevel = Integer.parseInt(level);int ilevel1 = ilevel+1;String str = "<tree>";int count = 0;if(list != null){count = list.size();}String key="BASE_DATA_NAME";if(count == 0){str = str + "<treetext=\"无下级目录\" />";}else{Iterator it= list.iterator();while(it.hasNext()){Map map=(Map) it.next();baseDataID = StringUtil.nullToStr(map.get("BASE_DATA_ID"));String name = StringUtil.nullToStr(map.get(key));//out.println("name = "+ name);if(ilevel < 1){str=str+"<tree text=\""+name+"\" src=\"basedata_tree.jsp?level="+ ilevel1 +"&baseDataID="+ baseDataID +"\" toolTip=\"\"/>";}else{int subNodeNumbers = baseDataMgr.findSubNodeSize(baseDataID);//判断节点是否包含子节点if(subNodeNumbers > 0){str=str+"<tree text=\""+name+"\" src=\"basedata_tree.jsp?level="+ ilevel1 +"&baseDataID="+ baseDataID +"\" toolTip=\"\"/>";}else{str=str+"<tree text=\""+name+"\" action=\"javascript:parent.goRight('"+ baseDataID +"','')\"toolTip=\"\"/>";}}}}str=str+"</tree>";out.println(str);%> 
 
 
http://moppet.taobao.com/
 
页: [1]
查看完整版本: xtree应用实例