进入旧版 | 服务项目 | 成功案例 | 联系方式 | 过客留言 | 友情链接
   
设为首页
加入收藏
联系我们
网站首页 | 新闻资讯 | 操作系统 | 办公软件 | 网络软件 | 工具软件 | 媒体动画 | 网页制作 | 网站开发 | 程序开发 | 平面设计
Photoshop视频教程 | Word入门 | Flash入门 | JScript | VBScript | ASP | PHP | ADO | 网页特效 | 3DS MAX6.0命令 | 系统进程
您当前的位置:GOODSGY电脑学习网 -> 程序开发 -> .Net -> 文章内容  
C#动态生成树型结构的Web程序设计

  摘 要 本文介绍一种基于web方式BS应用模式下,使用C#.net编程工具实现oracle数据库记录自动生成TreeView树型结构的程序设计。

  关键词 c# ;动态;树型;程序设计

  许多应用软件的程序设计,我们都希望能像Windows资源管理器那样将其驱动器和其下的文件及文件夹按照层次结构来安排。在C/S条件下这些很容易实现,那么在B/S的Web方式下,我们实现起来就不是特别容易。针对这个问题,在 2002 年,Microsoft? 发布了四种 ASP.NET Web 控件,用于为使用 Microsoft Internet Explorer 的 Web 访问者提供更好的体验。这些 Web 控件称为 Internet Explorer Web 控件,也简称为 IE Web 控件,其中就包含了TreeView Web 控件 ,它就为我们提供了一种按层次结构显示信息的方式。TreeView控件包含了称做“节点”(node)的一些条目的一个列表。每一个节点都可以有自己的节点集合,从而提供了一种更深层的数据定义。每个节点都可以被折叠起来,从而允许访问者在一个TreeView控件中查找,只看他所感兴趣的那一级的数据。就像Windows的资源管理器一样。只不过在使用前要安装IE Web Controls,并配置好运行环境后才能使用,使用Visual Studio .NET,则静态指定 TreeView 结构就像填写几份表格一样简单。

  虽然使用 Visual Studio .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 使用前数据库和IE Web控件的准备工作

  1)假如我们要建立如下图的数型结构

  
  图 1

  图1说明:器材管理、工地信息、公共信息是根节点,其余是子节点。

  2)在oracle数据库中建立如下图表的数据库表及字段

  
  图 2

  图2 说明:在数据库中设计字段时将菜单等级确定下来,用流水号来表示唯一性。

  
  图 3

  图3说明:器材管理根节点的子节点,所属主单序号001表明它要生成在器材管理之下。

  
  图 4

  图4说明:工地信息根节点的子节点,所属主单序号002表明它要生成在工地信息之下。

  
  图 5

  图5说明:公共信息根节点的子节点,所属主单序号005表明它要生成在公共信息之下。

  3)IE Web控件的准备工作

  IE Web 控件可以在安装了 .NET Framework 版本 1.0 或 1.1 的 Web 服务器上使用,在内含代码的类中使用 IE Web 控件,首先需要右击 Reference(引用),然后选择 Add Reference(添加引用),将引用添加到 Microsoft.Web.UI.WebControls.dll 程序集中。然后,在内含代码的类中,如果使用的是 C# ,则添加 using Microsoft.Web.UI.WebControls;

  2.2 界面和程序设计

  1) 上传设计

  1.1) Web界面如下

  
  图 6

  图6说明:在界面上对应设置控件TreeView1.

  1.2) 动态生成TreeView源代码

using Microsoft.Web.UI.WebControls;//添加控件的引用

private void GetTreeView()//程序开始
{
 try
 {
  string strSql = "SELECT DISTINCT Menu_id,Menu_name from docmodulemanager where Menu_level = 1 and sn in

  ("+All.Substring(0,All.Length-1).ToString()+")";
  OracleDataAdapter
  objAdapter = new OracleDataAdapter(strSql,objConn);
  DataSet ds = new DataSet();
  ds.Clear ();
  objAdapter.Fill(ds,"temp");
  DataTable dt = ds.Tables["temp"];
  TreeView1.Nodes.Clear();
  //建立根节点,遍历。

  foreach(DataRow dr in dt.Rows)
  {
   TreeNode Root = new TreeNode();
   Root.Text = dr["Menu_name"].ToString();
   TreeView1.Nodes.Add(Root);//建立根节点
   string str = "SELECT Menu_name,menu_addr,sn from docmodulemanager where upper_id = '" + dr["Menu_id"].ToString() + "' and sn in ("+menu_sn.Substring(0,menu_sn.Length-1).ToString()+")"+"order by menu_id,child_id";

   OracleDataAdapter objAdapterNode = new OracleDataAdapter(str,objConn);
   DataSet dsNode = new DataSet();
   dsNode.Clear ();
   objAdapterNode.Fill(dsNode,"tempNode");
   DataTable dtNode = dsNode.Tables["tempNode"];

  //建立子节点,遍历。

  foreach(DataRow drNode in dtNode.Rows)
  {
   TreeNode Node = new TreeNode();
   Node.Text = drNode["Menu_name"].ToString();
   Node.Target = "mainbottom";
   string Path = drNode["menu_addr"].ToString();
   int menusn = 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程序设计
在Google中搜索:C#动态生成树型结构的Web程序设计
在Yahoo中搜索:C#动态生成树型结构的Web程序设计

收藏到网摘:新浪VIVI 365key 我摘 POCO网摘 博采中心 YouNote 和讯网摘 天天收藏
[] [返回上一页] [打 印] [收 藏]

 相关文章    最新文章
· [图文] 用VC动态改变Windows的显示特性
· 朗玛UC动画聊天功能介绍
 
· C#中的数字格式化、格式日期格式化
· 在ASP.NET中跨页面实现多选
· Asp.net编程中的数组基础实例学习
· [组图] ASP.NET构架与安全机制之Http请求处..
· ASP.NET如何保留两位小数点
· Visual C#多线程参数传递浅析
· 在Visual C#中定义和使用自己的特性
· [图文] 利用C#远程存取Access数据库
· 用VB.NET 2005编写定时关机程序
· 《Effective C#》之减少装箱和拆箱

∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论…]
站内搜索

精彩图文
  网站导航  
操作系统 办公软件 网络软件
Vista Windows2003 WindowsXP Windows2000/NT Windows9X/ME Linux 其他 Word Excel Powerpoint Outlook 金山系列 其他 网页浏览 上传下载 联络聊天 邮件工具 服务器软件 网络辅助
工具软件 媒体动画 网页制作
系统工具 媒体工具 压缩工具 图文处理 文件管理 其他 3DMAX Authorware Director Maya 视频处理 其他 Flash Dreamweaver FireWorks FrontPage LiveMotion Golive HTML/CSS 其它
网站开发 平面设计 程序设计
ASP JSP PHP CGI JavaScript VBScript XML/SOAP Web服务器 Photoshop PhotoImpact CorelDraw Illustrator Freehand 设计欣赏 其他 VB VC .NET C/C++ DELPHI JAVA

冀ICP备05019428号
Copyright © 2004-2008 电脑学习网 Inc.All rights reserved.
TEL:13832340607
QQ:39873155
E_Mail:good_sgy@tom.com  
MSN:goodsgy@hotmail.com