首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 图形图象-> Maya教程
c#动态生成树型结构的web程序设计_c#应用
作者:网友供稿 点击:0
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
  许多应用软件的程序设计,我们都希望能像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();
}
}

文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·C# 1.x 实现 "强类型元素唯一的 ArrayList"-.NET教程,C#语言
·NET(C#)连接各类数据库-集锦-.NET教程,C#语言
·快速測試 Tomcat + Oracle 9i + JSP-JSP教程,Jsp/Servlet
·使用.NET读取XML文件-.NET教程,XML应用
·XML 实用工具类-JSP教程,Java与XML
·如何把ASP编写成DLL-ASP教程,ASP应用
·vb.net中不需要EXCEL导出成XSL-.NET教程,VB.Net语言
·Asp之Request对象(1)-ASP教程,ASP应用
·C#读硬盘序列号的原代码-.NET教程,C#语言
·取得的IP/用户名等信息-ASP教程,ASP应用
最新文章
·linux操作系统上摄像头的使用小技巧_linux教程
·c#动态生成树型结构的web程序设计_c#应用
·一个联盟该如何来吸引站长加盟_网赚技巧
·童之磊:中文在线的“二次创业”_站长访谈
·实体店铺如何与网店结合提高销售额的经验_站长心得
·20年之后,个人站长发展项目的一些奇思怪想_站长心得
·google adsense的菜鸟常识_google推广
·如何利用google增加你的网站访问量_google推广
·专业的seo,为什么不承诺排名_seo网站优化
·用专业代码给网站增加搜索引擎_站长心得
相关主题
西部数码虚拟主机

友情链接
CNNIC 西部数码
万网 自助建站
虚拟主机 asp空间
域名注册 域名
域名申请 主页空间
论坛空间 网站空间
国际域名 虚拟空间
空间租用 DDOS防火墙
成都主机托管 四川主机托管
主机租用 服务器租用
网站目录 自助建站
虚拟主机 网址大全
软件下载
自助链接
虚拟主机资讯 特价虚拟主机
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
发表评论 打印  刷新     关闭