您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > Java > C动态生成树型结构的Web程序设计
C#动态生成树型结构的Web程序设计许多应用软件的程序设计,我们都希望能像Windows资源管理器那样将其驱动器和其下的文件及文件夹按照层次结构来安排。在C/S条件下这些很容易实现,那么在B/S的Web方式下,我们实现起来就不是特别容易。针对这个问题,在2002年,Microsoft?发布了四种ASP.NETWeb控件,用于为使用MicrosoftInternetExplorer的Web访问者提供更好的体验。这些Web控件称为InternetExplorerWeb控件,也简称为IEWeb控件,其中就包含了TreeViewWeb控件,它就为我们提供了一种按层次结构显示信息的方式。TreeView控件包含了称做“节点”(node)的一些条目的一个列表。每一个节点都可以有自己的节点集合,从而提供了一种更深层的数据定义。每个节点都可以被折叠起来,从而允许访问者在一个TreeView控件中查找,只看他所感兴趣的那一级的数据。就像Windows的资源管理器一样。只不过在使用前要安装IEWebControls,并配置好运行环境后才能使用,使用VisualStudio.NET,则静态指定TreeView结构就像填写几份表格一样简单。虽然使用VisualStudio.NET将静态TreeNote添加到TreeView的过程非常简单,但通常需要将内容动态地添加到TreeView中。例如,您将目录树信息存储到了数据库中,或是正在设计一个资源管理器风格的Web应用程序(在此应用程序中,用户可以浏览Web服务器的文件系统),这时您可能需要根据服务器的文件夹和文件来动态填充TreeNote。本文就是使用C#.net语言通过编程方式,配合Oracle数据库实现一种动态的效果,达到动态的将TreeNote添加到TreeView的目的。1、设计思路和方法该程序设计思路和方法是:通过编程方式将TreeNote添加到TreeView中。要将新的TreeNote添加到现有的TreeNote中,只需要使用Nodes属性的Add()方法。方法是使用C#代码将创建两个TreeNote,并将第二个TreeNote添加为第一个TreeNote的子节点。然后,将第一个子节点添加到TreeView的根节点中。2、开发实例及程序源码2.1使用前数据库和IEWeb控件的准备工作1)假如我们要建立如下图的数型结构图1图1说明:器材管理、工地信息、公共信息是根节点,其余是子节点。2)在oracle数据库中建立如下图表的数据库表及字段图2图2说明:在数据库中设计字段时将菜单等级确定下来,用流水号来表示唯一性。图3图3说明:器材管理根节点的子节点,所属主单序号001表明它要生成在器材管理之下。图4图4说明:工地信息根节点的子节点,所属主单序号002表明它要生成在工地信息之下。图5图5说明:公共信息根节点的子节点,所属主单序号005表明它要生成在公共信息之下。3)IEWeb控件的准备工作IEWeb控件可以在安装了.NETFramework版本1.0或1.1的Web服务器上使用,在内含代码的类中使用IEWeb控件,首先需要右击Reference(引用),然后选择AddReference(添加引用),将引用添加到Microsoft.Web.UI.WebControls.dll程序集中。然后,在内含代码的类中,如果使用的是C#,则添加usingMicrosoft.Web.UI.WebControls;2.2界面和程序设计1)上传设计1.1)Web界面如下图6图6说明:在界面上对应设置控件TreeView1.1.2)动态生成TreeView源代码usingMicrosoft.Web.UI.WebControls;//添加控件的引用privatevoidGetTreeView()//程序开始{try{stringstrSql=SELECTDISTINCTMenu_id,Menu_namefromdocmodulemanagerwhereMenu_level=1andsnin(+All.Substring(0,All.Length-1).ToString()+);OracleDataAdapterobjAdapter=newOracleDataAdapter(strSql,objConn);DataSetds=newDataSet();ds.Clear();objAdapter.Fill(ds,temp);DataTabledt=ds.Tables[temp];TreeView1.Nodes.Clear();//建立根节点,遍历。foreach(DataRowdrindt.Rows){TreeNodeRoot=newTreeNode();Root.Text=dr[Menu_name].ToString();TreeView1.Nodes.Add(Root);//建立根节点stringstr=SELECTMenu_name,menu_addr,snfromdocmodulemanagerwhereupper_id='+dr[Menu_id].ToString()+'andsnin(+menu_sn.Substring(0,menu_sn.Length-1).ToString()+)+orderbymenu_id,child_id;OracleDataAdapterobjAdapterNode=newOracleDataAdapter(str,objConn);DataSetdsNode=newDataSet();dsNode.Clear();objAdapterNode.Fill(dsNode,tempNode);DataTabledtNode=dsNode.Tables[tempNode];//建立子节点,遍历。foreach(DataRowdrNodeindtNode.Rows){TreeNodeNode=newTreeNode();Node.Text=drNode[Menu_name].ToString();Node.Target=mainbottom;stringPath=drNode[menu_addr].ToString();intmenusn=Convert.ToInt32(drNode[sn].ToString());Node.NavigateUrl=Transfer.aspx+?menu_addr=+Path;Root.Nodes.Add(Node);//建立子节点}}}catch{Response.Write(alert('您没有可操作的菜单项,请与管理员联系!'););}finally{if(objConn.State.ToString().Equals(Open))objConn.Close();}}
本文标题:C动态生成树型结构的Web程序设计
链接地址:https://www.777doc.com/doc-2908419 .html