移植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环境中很多服务器的文件名是区分大小写的。


解决ASP.NET的TREEVIEW控件不能显示树型结构 当我们使用ASP.NET的TREEVIEW控件时候,我们发现ASP.NET的TREEVIEW控件不能显示树型而是显示为顺序排列的文字。我们该怎么解决呢 (1)安装IEWebControls.(下载地址httpasp.netIEWebControlsDownload.aspxtabid=1) (2)运行Build.bat.注意,我们先用记事本打开Build.bat,在里面我们看到csc.exe,它的前面没有路径,所以我们运行它的时候会产生一个build目录及其相应文件,却在build目录下无法找到Microsoft.Web.UI.WebControls.dll.解决方法打开C盘(假设操作系统安装在该盘下),搜索csc.exe,我们会发现搜索到两个文件,选择第一个文件(名称为csc)的属性,复制其位置CWINDOWSMicrosoft.NETFrameworkv1.1.4322,然后将它粘贴到Build.bat中csc.exe前面即可(CWINDOWSMicrosoft.NETFrameworkv1.1.4322csc.exe),再运行Build.bat. (3) 1.如果IIS的根目录默认的路径(cinetpubwwwroot)没有改变,则只需要将运行Build.bat后生成的build目录下的Runtime目录下的文件和文件夹一起复制到CInetpubwwwrootwebctrl_client1_0下就可以了,webctrl_client1_0这两级目录需要你自己创建.(文件夹名称别弄错了哦!:)) 2.如果IIS的根目录已经由默认的路径(cinetpubwwwroot)改变为其他路径(假设为Dexample),我们需要重新在IIS上注册asp.net,具体步骤Windows “开始”菜单-“程序”-“Visual Studio .NET 2003”-“Visual Studio .NET 工具”-“Visual Studio .NET 命令提示”,然后在该窗口输入打开后,输入 aspnet_regiis i 回车即可。成功安装后,你会发现Dexample目录下多了一个名为aspnet_client的文件夹,表示你注册成功了!然后需要将运行Build.bat后生成的build目录下的Runtime目录下的文件复制到Dexamplewebctrl_client1_0下就可以了,webctrl_client1_0 这两级目录需要你自己创建. (4)把生成的Microsoft.Web.UI.WebControls.dll 放到你的工程项目中文件夹的名称为 bin 的目录下。 这样ASP.NET的TREEVIEW控件就能够正确显示树型结构了! 友情提示:你成功安装 IEWebControls 后(默认C盘哈),你在CProgram FilesIE Web Controls下有个README.txt的文本文件,上面非常详细的讲解了如何正确使用 IEWebControls 的方法,并给出了样例。:) 以上解决方法适用于Visual Studio .NET 2003.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值