心無痕的博客

          常用鏈接

          統計

          積分與排名

          JAVA技術文檔

          JAVA精典網站

          開發工具

          數據庫

          最新評論

          用DTree實現樹型結構數據展現

          這兩天發現了dtree,做的很不錯,想和大家交流一下
          下載地址:http://www.destroydrop.com/javascripts/tree/dtree.zip
          或從附件里下載
          看看里面的example01.html例子。
          在這個基礎上我做了一個動態的樹型結構數據的展現(其實就是動態生成js代碼而已)。
          java類代碼
          Java代碼 復制代碼
          1. import java.io.Serializable;   
          2. public class TreeNode implements Serializable{   
          3.     private String id ;          //節點編號   
          4.     private String pid ;         //父節點編號   
          5.     private String name ;        //節點名稱   
          6.     private String url ;         //鏈接地址   
          7.     private String title ;       //節點描述   
          8.     private String target ;      //Target   
          9.     private String icon ;        //圖標路徑   
          10.     private String iconOpen ;    //展開狀態下的圖標路徑   
          11.     private String open ;        //是否展開   
          12.        
          13.     //構造函數   
          14.     public TreeNode(){   
          15.         id = "" ;   
          16.         pid = "" ;   
          17.         name = "" ;   
          18.         url = "" ;   
          19.         title = "" ;   
          20.         target = "" ;   
          21.         icon = "" ;   
          22.         iconOpen = "" ;   
          23.         open = "" ;   
          24.     }   
          25.     //------get set functions  

          Java代碼 復制代碼
          1. public class TreeNodeUtil {   
          2.     //返回js代碼   
          3.     public static String createJsArray(TreeNode[] tn , String dtree) {   
          4.         if(tn == null || tn.length == 0 ){   
          5.             System.out.println("TreeNode is empty");   
          6.             return "";   
          7.         }   
          8.         StringBuffer contents = new StringBuffer(100);   
          9.         contents.append("new dTree('"+dtree+"');");   
          10.         for (int i = 0; i < tn.length; i++) {    
          11.             contents.append("\n");   
          12.             contents.append(dtree+".add('");   
          13.             contents.append(tn[i].getId());   
          14.             contents.append("','");   
          15.             contents.append(tn[i].getPid());   
          16.             contents.append("','");   
          17.             contents.append(tn[i].getName());   
          18.             contents.append("','");   
          19.             contents.append(tn[i].getUrl());   
          20.             contents.append("','");   
          21.             contents.append(tn[i].getTitle());   
          22.             contents.append("','");   
          23.             contents.append(tn[i].getTarget());   
          24.             contents.append("','");   
          25.             contents.append(tn[i].getIcon());   
          26.             contents.append("','");   
          27.             contents.append(tn[i].getIconOpen());   
          28.             contents.append("','");   
          29.             contents.append(tn[i].getOpen());   
          30.             contents.append("');");   
          31.         }   
          32.         return contents.toString();   
          33.     }   
          34. }  

          根據實際情況生成TreeNode對象
          Java代碼 復制代碼
          1. public void execute() throws EpochalException {   
          2.     // TODO Auto-generated method stub   
          3.     String sql = "";   
          4.     String url = "" ;   
          5.     sql = "SELECT id,parentId,name,seq ,remark FROM t_testtree ORDER BY  seq DESC" ;   
          6.     TableData tableData = null;   
          7.     TreeNode[] treeNodes = null;   
          8.     try{   
          9.         tableData = TableSelector.select(sql);   
          10.         if(tableData!=null){   
          11.             treeNodes = new TreeNode[tableData.getRowCount()] ;   
          12.             for(int i = 0; i<tableData.getRowCount();i++){   
          13.                 treeNodes[i] = new TreeNode();   
          14.                 treeNodes[i].setId(tableData.getString(i,"id"));   
          15.                 treeNodes[i].setName(tableData.getString(i,"name"));   
          16.                 treeNodes[i].setPid(tableData.getString(i,"parentId"));   
          17.                 //根據實際情況生成連接地址   
          18.                 url = "programList.x?category="+tableData.getString(i,"name") ;   
          19.                 treeNodes[i].setUrl(url);   
          20.                 treeNodes[i].setTitle(tableData.getString(i,"remark"));   
          21.                 treeNodes[i].setTarget("_blank");//打開新窗口   
          22.             }   
          23.             dataBean.setParameter("treeNodeArray",treeNodes) ;   
          24.         }   
          25.     }catch(Exception e){   
          26.         System.out.println(e.toString());   
          27.     }   
          28. }  

          jsp這邊取"treeNodeArray"后通過TreeNodeUtil類生成js代碼
          Java代碼 復制代碼
          1. <%   
          2. TreeNode[] treeNodes = (TreeNode[])dataBean.getParameterObject("treeNodeArray") ;   
          3. %>   
          4. <p><a href="javascript: d.openAll();">全部展開</a> | <a href="javascript: d.closeAll();">全部關閉</a></p>   
          5. <script language="javascript">   
          6. d = <%=TreeNodeUtil.createJsArray(treeNodes,"d")%>   
          7. document.write(d);   
          8. </script>  

          客戶端生成的js代碼
          Java代碼 復制代碼
          1. <script language="javascript">   
          2. d = new dTree('d');   
          3. d.add('1','-1','欄目','programList.x?category=欄目','','_blank','','','');   
          4. d.add('2','1','電影','programList.x?category=電影','','_blank','','','');   
          5. d.add('3','1','電視劇','programList.x?category=電視劇','','_blank','','','');   
          6. d.add('4','1','專題','programList.x?category=專題','','_blank','','','');   
          7. d.add('5','1','遠程教育','programList.x?category=遠程教育','','_blank','','','');   
          8. d.add('6','1','期刊','programList.x?category=期刊','','_blank','','','');   
          9. d.add('7','2','動作片','programList.x?category=動作片','','_blank','','','');   
          10. d.add('8','2','喜劇片','programList.x?category=喜劇片','','_blank','','','');   
          11. d.add('9','2','鬼片','programList.x?category=鬼片','','_blank','','','');   
          12. d.add('10','3','韓劇','programList.x?category=韓劇','','_blank','','','');   
          13. d.add('11','3','古裝劇','programList.x?category=古裝劇','','_blank','','','');   
          14. d.add('12','5','英語沙龍','programList.x?category=英語沙龍','','_blank','','','');   
          15. d.add('13','4','熱門推薦','programList.x?category=熱門推薦','','_blank','','','');   
          16. d.add('14','7','港臺片','programList.x?category=港臺片','','_blank','','','');   
          17. d.add('15','7','歐美片','programList.x?category=歐美片','','_blank','','','');   
          18. d.add('16','14','成龍全集','programList.x?category=成龍全集','','_blank','','','');   
          19. d.add('17','14','李連杰全集','programList.x?category=李連杰全集','','_blank','','','');   
          20. document.write(d);   
          21. </script>  


          感覺使用很方便,數據量不是很大(一般的樹型結構的數據量不會很大的,數據量大了就不直觀了)的情況下能夠滿足大多數人的需要。
          注意的是root節點的pid必須為'-1'
          • dtree.zip (14.6 KB)
          • 描述: dtree.zip
          • 下載次數: 507

          posted on 2008-06-03 09:48 心無痕 閱讀(1010) 評論(1)  編輯  收藏 所屬分類: JAVA

          評論

          # re: 用DTree實現樹型結構數據展現[未登錄] 2010-01-22 13:40 user

          感謝dTree  回復  更多評論   

          主站蜘蛛池模板: 永兴县| 禄劝| 万源市| 离岛区| 彭州市| 墨玉县| 乌审旗| 灵寿县| 天水市| 静乐县| 赫章县| 罗定市| 普陀区| 会泽县| 陆河县| 呼玛县| 昭通市| 上犹县| 涪陵区| 抚松县| 类乌齐县| 宁波市| 夏河县| 平阴县| 新密市| 永德县| 个旧市| 武安市| 霍城县| 隆林| 中宁县| 广元市| 星座| 堆龙德庆县| 蛟河市| 沈阳市| 延长县| 平舆县| 安远县| 当雄县| 长岛县|