移植IEWebControls到Java開發環境------------轉載自他人

在.Net環境中,本人覺得iewebcontrols控件做的很不錯,但是在一個Java項目中,我想找一個TreeView web控件,試過了xtree以及YUI,但始終感覺不如iewebcontrols中的treeview做的好,我想:可不可以將它移植過來呢?
我將頁面生成的Html文件保存下來,分析了一下,以下是測試腳本:

 代碼
  1. //**********************************************************************************************//   
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">   
  3. <HTML>   
  4.  <HEAD>   
  5.   <title>tree</title>   
  6.   <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">   
  7.   <meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">   
  8.   <meta name="vs_defaultClientScript" content="JavaScript">   
  9.   <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">   
  10.   <LINK href="css/style.css" _fcksavedurl=""css/style.css"" type="text/css" rel="stylesheet">   
  11.  </HEAD>   
  12.  <SCRIPT>   
  13.     //通過NodeData查找節點   
  14.     function getNodeByData(tree,data){   
  15.         var root=tree.getChildren();   
  16.         for(var i=0;i<root.length;i++){   
  17.            if(root[i].getAttribute("NodeData")==data){   
  18.               return root[i];   
  19.            }else if(root[i].getChildren().length>0){   
  20.               var node=getNodeByData(root[i],data);   
  21.               if(node!=nullreturn node;   
  22.            }   
  23.         }   
  24.         return null;   
  25.     }   
  26.     //通過節點文本查找節點   
  27.     function getNodeByText(tree,text){   
  28.         var root=tree.getChildren();   
  29.         for(var i=0;i<root.length;i++){   
  30.            if(root[i].getAttribute("Text")==text){   
  31.               return root[i];   
  32.            }else if(root[i].getChildren().length>0){   
  33.               var node=getNodeByData(root[i],text);   
  34.               if(node!=nullreturn node;   
  35.            }   
  36.         }   
  37.         return null;   
  38.     }   
  39.     //測試添加節點   
  40.     function doadd(){   
  41.         //alert(tvNodes.getTreeNode(tvNodes.selectedNodeIndex).getAttribute("NodeData"));   
  42.         var node1=getNodeByText(tvNodes,'權限管理');   
  43.         var node2=getNodeByData(tvNodes,'1101');   
  44.         //alert(node1.getAttribute("NodeData"));   
  45.         //alert(node2.getAttribute("Text"));   
  46.         var node3=tvNodes.createTreeNode();   
  47.         if(node1!=null && node2!=null){   
  48.          node3.setAttribute("NodeData","1109");   
  49.          node3.setAttribute("Text",node2.getAttribute("Text"));   
  50.          node3.setAttribute("NavigateUrl",node2.getAttribute("NavigateUrl"));   
  51.          node3.setAttribute("ImageUrl",node2.getAttribute("ImageUrl"));   
  52.          node3.setAttribute("SelectedImageUrl",node2.getAttribute("SelectedImageUrl"));   
  53.          node3.setAttribute("ExpandedImageUrl",node2.getAttribute("ExpandedImageUrl"));   
  54.          node3.setAttribute("Target",node2.getAttribute("Target"));   
  55.          node1.add(node3);   
  56.         }   
  57.     }   
  58.     //測試刪除節點   
  59.     function dodel(){   
  60.         var node=getNodeByData(tvNodes,'1109');   
  61.         //alert(node.getParent().getAttribute("Text"));//獲取父節點   
  62.         if(node!=null) node.remove();   
  63.     }   
  64.    </SCRIPT>   
  65.  <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" rightmargin="0" scroll="no">   
  66.   <form name="Form1" method="post" action="left.aspx" id="Form1">   
  67.        <input type="hidden" name="__tvNodes_State__" value=""/>   
  68.    <FONT face="宋體">   
  69.     <TABLE class="Table0" id="TableLeft" cellSpacing="1" cellPadding="1" border="0" width="180"  
  70.      height="100%">   
  71.      <TR>   
  72.       <TD><?XML:NAMESPACE PREFIX=TVNS />   
  73. <?IMPORT NAMESPACE=TVNS IMPLEMENTATION="webctrl_client/1_0/treeview.htc" />   
  74. <tvns:treeview id="tvNodes" selectedNodeIndex="0" HelperID="__tvNodes_State__" systemImagesPath="./webctrl_client/1_0/TreeImages/" onexpand="javascript: if (this.clickedNodeIndex != null) this.queueEvent('onexpand', this.clickedNodeIndex)" oncollapse="javascript: if (this.clickedNodeIndex != null) this.queueEvent('oncollapse', this.clickedNodeIndex)" oncheck="javascript: if (this.clickedNodeIndex != null) this.queueEvent('oncheck', this.clickedNodeIndex)" onselectedindexchange="javascript: if (event.oldTreeNodeIndex != event.newTreeNodeIndex) this.queueEvent('onselectedindexchange', event.oldTreeNodeIndex + ',' + event.newTreeNodeIndex)" style="height:100%;width:175px;Z-INDEX: 101">   
  75.  <tvns:treenode Expanded="True" Selected="true" NavigateUrl="baseinfo/info_employee_main.aspx" NodeData="1000" ImageUrl="images/image/page.gif" SelectedImageUrl="images/image/xiaotu.jpg" ExpandedImageUrl="images/image/expand.gif" Target="mainFrame">   
  76.   基本信息管理<tvns:treenode NavigateUrl="baseinfo/info_employee_main.aspx" NodeData="1001" ImageUrl="images/image/page.gif" SelectedImageUrl="images/image/xiaotu.jpg" ExpandedImageUrl="images/image/expand.gif" Target="mainFrame">   
  77.    用戶管理   
  78.   </tvns:treenode><tvns:treenode NavigateUrl="baseinfo/info_company_main.aspx" NodeData="1002" ImageUrl="images/image/page.gif" SelectedImageUrl="images/image/xiaotu.jpg" ExpandedImageUrl="images/image/expand.gif" Target="mainFrame">   
  79.    部門公司管理   
  80.   </tvns:treenode><tvns:treenode NavigateUrl="baseinfo/info_BaseCode_main.aspx" NodeData="1003" ImageUrl="images/image/page.gif" SelectedImageUrl="images/image/xiaotu.jpg" ExpandedImageUrl="images/image/expand.gif" Target="mainFrame">   
  81.    基本代碼管理   
  82.   </tvns:treenode>   
  83.  </tvns:treenode>   
  84.  <tvns:treenode Expanded="True" NavigateUrl="right/user_node.aspx" NodeData="1100" ImageUrl="images/image/page.gif" SelectedImageUrl="images/image/xiaotu.jpg" ExpandedImageUrl="images/image/expand.gif" Target="mainFrame">   
  85.   權限管理<tvns:treenode NavigateUrl="right/Auth_node_info.aspx" NodeData="1101" ImageUrl="images/image/page.gif" SelectedImageUrl="images/image/xiaotu.jpg" ExpandedImageUrl="images/image/expand.gif" Target="mainFrame">   
  86.    節點信息   
  87.   </tvns:treenode><tvns:treenode NavigateUrl="right/Auth_right_info.aspx" NodeData="1102" ImageUrl="images/image/page.gif" SelectedImageUrl="images/image/xiaotu.jpg" ExpandedImageUrl="images/image/expand.gif" Target="mainFrame">   
  88.    頁面管理   
  89.   </tvns:treenode><tvns:treenode NavigateUrl="right/Auth_role_info.aspx" NodeData="1103" ImageUrl="images/image/page.gif" SelectedImageUrl="images/image/xiaotu.jpg" ExpandedImageUrl="images/image/expand.gif" Target="mainFrame">   
  90.    角色信息   
  91.   </tvns:treenode><tvns:treenode NavigateUrl="right/user_node.aspx" NodeData="1201" ImageUrl="images/image/page.gif" SelectedImageUrl="images/image/xiaotu.jpg" ExpandedImageUrl="images/image/expand.gif" Target="mainFrame">   
  92.    節點授權   
  93.   </tvns:treenode><tvns:treenode NavigateUrl="right/user_right.aspx" NodeData="1202" ImageUrl="images/image/page.gif" SelectedImageUrl="images/image/xiaotu.jpg" ExpandedImageUrl="images/image/expand.gif" Target="mainFrame">   
  94.    頁面授權   
  95.   </tvns:treenode><tvns:treenode NavigateUrl="right/user_role.aspx" NodeData="1203" ImageUrl="images/image/page.gif" SelectedImageUrl="images/image/xiaotu.jpg" ExpandedImageUrl="images/image/expand.gif" Target="mainFrame">   
  96.    用戶角色管理   
  97.   </tvns:treenode><tvns:treenode NavigateUrl="right/user_query.aspx" NodeData="1204" ImageUrl="images/image/page.gif" SelectedImageUrl="images/image/xiaotu.jpg" ExpandedImageUrl="images/image/expand.gif" Target="mainFrame">   
  98.    查詢授權   
  99.   </tvns:treenode>   
  100.  </tvns:treenode>   
  101. </tvns:treeview>   
  102.       </TD>   
  103.      </TR>   
  104.     </TABLE>   
  105.  <table style="position: absolute; width: 200px; top: 100px; left: 300px; height: 100%;">   
  106.         <input type='button' value='add' οnclick='doadd()'></input>   
  107.         <input type='button' value='delete' οnclick='dodel()'></input>   
  108.  </table>   
  109.  </FONT>   
  110.  </form>   
  111.  </body>   
  112. </HTML>   
  113. //**********************************************************************************************//   
在IE下,以上Html腳本可以單獨作爲文件保存,它和iewebcontrols安裝後的webctrl_client目錄在同一個目錄下,這樣就可以運行在實際的開發當中,<tvns:treenode>節點我們可以採用XML來生成。
    在該腳本中,我添加了四個函數,分別用來:(1)通過NodeData查找節點;(2)通過節點文本查找節點;(3)添加節點;(4)刪除節點。我想具備了這幾個功能之後,在jsp當中就可以靈活的使用這個treeview組件了。
    技術說明:在這個組件當中,使用了兩個很關鍵的技術:htc以及XML命名空間,當然也用到了DOM和Javascript,在我的腳本當中,使用了裏面的方法和屬性,詳細使用和功能需要揣摩webctrl_client\1_0下的treeview.htc文件中的方法和屬性
    說明:在java環境中,如果出現樹的部分圖片顯示不正常,檢查一下圖片鏈接地址是否有問題,參考路徑是systemImagesPath,還有一種可能情況是圖片的名稱大小寫是否一致,不一致的話修改圖片名稱,因爲在java環境中很多服務器的文件名是區分大小寫的。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章