C#动态生成树型结构的Web程序设计

转载 2007年09月21日 21:11:00
许多应用软件的程序设计,我们都希望能像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程序设计实例

 1.2) 动态生成TreeView源代码  using Microsoft.Web.UI.WebControls;//添加控件的引用private void GetTreeView()//程序开始{...
  • zwghea
  • zwghea
  • 2009年04月07日 17:07
  • 324

C#动态生成树型结构的Web程序设计

摘 要 本文介绍一种基于web方式BS应用模式下,使用C#.net编程工具实现oracle数据库记录自动生成TreeView树型结构的程序设计。  关键词 c# ;动态;树型;程序设计  许多应用软件...
  • viaivi
  • viaivi
  • 2007年08月13日 10:15
  • 505

Visual C#.NET Web应用程序设计

  • sxiaof
  • sxiaof
  • 2008年02月22日 02:55
  • 262

动态生成树型结构方法

动态生成树型结构方法 一个分类体系,比如将所有列车第一分类,车厢作为第二级别分类,车厢里面的排作为第三级分类……等等,这样就可以统一在一个表里面实现,比如:   0001列车一   00010001列...
  • zerolwp
  • zerolwp
  • 2010年09月02日 16:38
  • 290

dtree动态生成树型结构

本文参考http://www.hikersblog.com/blog/user1/13/archives/2005/4244.shtml 以表谢意dtree是一个免费的javascript脚本,只需定...
  • pengchua
  • pengchua
  • 2007年08月06日 16:46
  • 2654

二级web程序设计选择题(个人心得与总结)(1)

本人准备考二级web程序设计,买了本练习册,做了一下选择题,下面是我觉得是比较难,有些也是本人不太熟悉的知识点,希望对你们有用!有正确答案加分析 1.下列链表中,其逻辑结构属于非线性结构的是(D) ...
  • u014692369
  • u014692369
  • 2015年03月11日 21:33
  • 836

WEB程序设计之CSS(一)

WEB程序设计之CSS(一)
  • java2316
  • java2316
  • 2014年10月28日 20:01
  • 1264

Web程序设计项目【附源码】

项目说明及需求 设计思路 具体实现 注册界面 用户登录 修改密码 商品列表 管理员登录 管理员操作 小黑屋 管理库存服装 删除添加更新商品信息 数据库信息 回顾与反思 源码下载项目说明及需求 建立和维...
  • Anwhere_jin
  • Anwhere_jin
  • 2017年08月21日 14:45
  • 737

[Java Web]动态生成静态页

最近手机APP需要加一个分享功能。考虑到分享页面的点击量会远远大于注册用户量,为了减少服务器压力决定将分享页面生成html静态页供用户访问。 生成静态页的总体思路为: 从数据库中查找所需的数据...
  • sinat_19425927
  • sinat_19425927
  • 2015年01月04日 18:08
  • 1225

用C#创建Web应用程序

  • zgqtxwd
  • zgqtxwd
  • 2008年04月24日 13:50
  • 192
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#动态生成树型结构的Web程序设计
举报原因:
原因补充:

(最多只允许输入30个字)