<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    心無(wú)痕的博客

    常用鏈接

    統(tǒng)計(jì)

    積分與排名

    JAVA技術(shù)文檔

    JAVA精典網(wǎng)站

    開(kāi)發(fā)工具

    數(shù)據(jù)庫(kù)

    最新評(píng)論

    用DTree實(shí)現(xiàn)樹(shù)型結(jié)構(gòu)數(shù)據(jù)展現(xiàn)

    這兩天發(fā)現(xiàn)了dtree,做的很不錯(cuò),想和大家交流一下
    下載地址:http://www.destroydrop.com/javascripts/tree/dtree.zip
    或從附件里下載
    看看里面的example01.html例子。
    在這個(gè)基礎(chǔ)上我做了一個(gè)動(dòng)態(tài)的樹(shù)型結(jié)構(gòu)數(shù)據(jù)的展現(xiàn)(其實(shí)就是動(dòng)態(tài)生成js代碼而已)。
    java類(lèi)代碼
    Java代碼 復(fù)制代碼
    1. import java.io.Serializable;   
    2. public class TreeNode implements Serializable{   
    3.     private String id ;          //節(jié)點(diǎn)編號(hào)   
    4.     private String pid ;         //父節(jié)點(diǎn)編號(hào)   
    5.     private String name ;        //節(jié)點(diǎn)名稱(chēng)   
    6.     private String url ;         //鏈接地址   
    7.     private String title ;       //節(jié)點(diǎn)描述   
    8.     private String target ;      //Target   
    9.     private String icon ;        //圖標(biāo)路徑   
    10.     private String iconOpen ;    //展開(kāi)狀態(tài)下的圖標(biāo)路徑   
    11.     private String open ;        //是否展開(kāi)   
    12.        
    13.     //構(gòu)造函數(shù)   
    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代碼 復(fù)制代碼
    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. }  

    根據(jù)實(shí)際情況生成TreeNode對(duì)象
    Java代碼 復(fù)制代碼
    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.                 //根據(jù)實(shí)際情況生成連接地址   
    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");//打開(kāi)新窗口   
    22.             }   
    23.             dataBean.setParameter("treeNodeArray",treeNodes) ;   
    24.         }   
    25.     }catch(Exception e){   
    26.         System.out.println(e.toString());   
    27.     }   
    28. }  

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

    客戶(hù)端生成的js代碼
    Java代碼 復(fù)制代碼
    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','專(zhuān)題','programList.x?category=專(zhuān)題','','_blank','','','');   
    7. d.add('5','1','遠(yuǎn)程教育','programList.x?category=遠(yuǎn)程教育','','_blank','','','');   
    8. d.add('6','1','期刊','programList.x?category=期刊','','_blank','','','');   
    9. d.add('7','2','動(dòng)作片','programList.x?category=動(dòng)作片','','_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','英語(yǔ)沙龍','programList.x?category=英語(yǔ)沙龍','','_blank','','','');   
    15. d.add('13','4','熱門(mén)推薦','programList.x?category=熱門(mén)推薦','','_blank','','','');   
    16. d.add('14','7','港臺(tái)片','programList.x?category=港臺(tái)片','','_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>  


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

    posted on 2008-06-03 09:48 心無(wú)痕 閱讀(1009) 評(píng)論(1)  編輯  收藏 所屬分類(lèi): JAVA

    評(píng)論

    # re: 用DTree實(shí)現(xiàn)樹(shù)型結(jié)構(gòu)數(shù)據(jù)展現(xiàn)[未登錄](méi) 2010-01-22 13:40 user

    感謝dTree  回復(fù)  更多評(píng)論   

    主站蜘蛛池模板: 色偷偷亚洲女人天堂观看欧| 亚洲黄网在线观看| 亚洲免费人成在线视频观看| 亚洲精品无码永久在线观看你懂的| 亚洲av中文无码乱人伦在线r▽ | 国产免费阿v精品视频网址| 免费日本一区二区| 麻豆国产精品免费视频| 国产极品粉嫩泬免费观看| 亚洲一区二区三区自拍公司| 亚洲高清资源在线观看| 亚洲欧美国产欧美色欲| 国产午夜精品理论片免费观看 | 精品亚洲综合久久中文字幕| 91情国产l精品国产亚洲区| 亚洲第一成年网站视频| 久久99精品免费一区二区| 国产精彩免费视频| 深夜国产福利99亚洲视频| 亚洲av伊人久久综合密臀性色| 亚洲人成7777影视在线观看| 免费看一级一级人妻片| 最近2019中文字幕免费直播| 国产精品成人四虎免费视频| 久久精品亚洲日本佐佐木明希| 亚洲日韩国产一区二区三区在线| 亚洲免费日韩无码系列| 性做久久久久久免费观看| 国产成人精品日本亚洲专区 | 日韩电影免费在线观看| 18禁成年无码免费网站无遮挡 | 亚洲成片观看四虎永久| 久久亚洲精品无码aⅴ大香| 国产精品亚洲一区二区三区| 免费人成在线观看网站品爱网| 国产色爽免费视频| 亚洲三级电影网址| 成年大片免费高清在线看黄| 黄色成人免费网站| 亚洲精品制服丝袜四区| 亚洲国产精品无码久久久秋霞1|