• (转) treeview 的设计思路


     
    数据库设计
    首先,我们在SQL SERVER 2000里建立一个表tbTree,表的结构设计如下:

    列名
    数据类型
    描述
    长度
    主键
    ID
    Int
    节点编号
    4
    ParentID
    Int
    父节点编号
    4
     
    ConText
    Nvarchar
    我们要显示的节点内容
    50
     

    在SQL SERVER 2000中建表的脚本:
    CREATE TABLE [dbo].[tbTree] (
           [ID] [int] IDENTITY (1, 1) NOT NULL ,
           [Context] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
           [ParentID] [int] NULL
    ) ON [PRIMARY]
     
    在表中添加如下记录:
    SET IDENTITY_INSERT tbtree ON
    insert tbtree (ID,Context,ParentID) values ( 1,'中国',0)
    insert tbtree (ID,Context,ParentID) values ( 2,'北京',1)
    insert tbtree (ID,Context,ParentID) values ( 3,'天津',1)
    insert tbtree (ID,Context,ParentID) values ( 4,'河北省',1)
    insert tbtree (ID,Context,ParentID) values ( 5,'广东省',1)
    insert tbtree (ID,Context,ParentID) values ( 6,'广州',5)
    insert tbtree (ID,Context,ParentID) values ( 7,'四川省',1)
    insert tbtree (ID,Context,ParentID) values ( 8,'成都',7)
    insert tbtree (ID,Context,ParentID) values ( 9,'深圳',5)
    insert tbtree (ID,Context,ParentID) values ( 10,'石家庄',4)
    insert tbtree (ID,Context,ParentID) values ( 11,'辽宁省',1)
    insert tbtree (ID,Context,ParentID) values ( 12,'大连',11)
    insert tbtree (ID,Context,ParentID) values ( 13,'上海',1)
    insert tbtree (ID,Context,ParentID) values ( 14,'天河软件园',6)
    insert tbtree (ID,Context,ParentID) values ( 15,'汕头',5)
    SET IDENTITY_INSERT tbtree off
    下载Treeview控件地址
    安装后,通过“自定义工具箱”->“.net框架组件”把TreeView添加到工具箱里。
    新建一个项目,在页面上拖画一个TreeView控件。
    namespace TreeCS
    {
           /// <summary>
           /// WebForm1 的摘要说明
           /// </summary>
           public class WebForm1 : System.Web.UI.Page
           {
                  protected Microsoft.Web.UI.WebControls.TreeView TreeView1;
          
                  private void Page_Load(object sender, System.EventArgs e)
                  {
                         // 定义数据库连接
                         SqlConnection CN = new SqlConnection();
                         try
                         {
                                //初始化连接字符串
                                CN.ConnectionString= "data source=pmserver;initial catalog=Benchmark;persist security info=False;user id=sa;Password=;";
                                CN.Open();
     
                                SqlDataAdapter adp = new SqlDataAdapter("select * from tbTree",CN);
                                DataSet ds=new DataSet();
                                adp.Fill(ds);
                                this.ViewState["ds"]=ds;
                         }
                         catch (Exception ex)
                         {
                                Session["Error"] = ex.ToString();
                                Response.Redirect("error.aspx");       //̀跳转程序的公共错误处理页面
                         }
                         finally
                         {
                                CN.Close();
                         }
                         //调用递归函数,完成树形结构的生成
                         AddTree(0, (TreeNode)null);
                  }
     
                  //递归添加树的节点
                  public void AddTree(int ParentID,TreeNode pNode)
                  {
                         DataSet ds=(DataSet) this.ViewState["ds"];
                         DataView dvTree = new DataView(ds.Tables[0]);
                         //过滤ParentID,得到当前的所有子节点
                         dvTree.RowFilter =  "[PARENTID] = " + ParentID;
     
                         foreach(DataRowView Row in dvTree)
                         {
                                TreeNode Node=new TreeNode() ;
                                if(pNode == null)
                                {    //添加根节点
                                       Node.Text = Row["ConText"].ToString();
                                       TreeView1.Nodes.Add(Node);
                                       Node.Expanded=true;
                                       AddTree(Int32.Parse(Row["ID"].ToString()), Node);    //再次递归
                                }
                                else
                                {   //̀添加当前节点的子节点
                                       Node.Text = Row["ConText"].ToString();
                                       pNode.Nodes.Add(Node);
                                       Node.Expanded = true;
                                       AddTree(Int32.Parse(Row["ID"].ToString()),Node);     //再次递归
                                }
                         }                  
                  }           
     
                  #region Web Form Designer generated code
                  override protected void OnInit(EventArgs e)
                  {
                         //
                         // CODEGEN该调用是 ASP.NET Web 窗体设计器所必需的。
                         //
                         InitializeComponent();
                         base.OnInit(e);
                  }
                 
                  /// <summary>
                  ///设计器支持所需的方法 - 不要使用代码编辑器修改
                  /// 此方法的内容
                  /// </summary>
                  private void InitializeComponent()
                  {   
                         this.Load += new System.EventHandler(this.Page_Load);
     
                  }
                  #endregion
           }
    }







  • 相关阅读:
    RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-模块管理按子系统进行分类管理
    RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-新增锁定用户与解除锁定用户的功能
    Vue常用经典开源项目汇总参考-海量
    RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2->用户管理模块新增“重置用户密码”功能
    RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2 新增解压缩工具类ZipHelper
    RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2->新增记录SQL执行过程
    RDIFramework.NET平台代码生成器V3.2版本全新发布(提供下载-免费使用)
    [译]何时使用 Parallel.ForEach,何时使用 PLINQ
    IntelliJ IDEA 12 与 Tomcat7 配置
    git用.gitignore忽略指定文件
  • 原文地址:https://www.cnblogs.com/suneryong/p/780643.html
Copyright © 2020-2023  润新知