zoukankan      html  css  js  c++  java
  • NET平台下Web树形结构程序设计

    .NET平台下Web树形结构程序设计
    李洪根
    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,'北京',11)
    insert tbtree (ID,Context,ParentID) values ( 3,'天津',11)
    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
    <%@ Register TagPrefix="iewc" Namespace="Microsoft.Web.UI.WebControls" Assembly="Microsoft.Web.UI.WebControls, Version=1.0.2.226, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
    <%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="Tree.WebForm1"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <title>WebForm1</title>
    <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.0">
    <meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
    <meta name="vs_defaultClientScript" content="JavaScript">
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    </HEAD>
    <body MS_POSITIONING="GridLayout">
    <form id="Form1" method="post" runat="server">
    <FONT face="宋体">
    <iewc:TreeView id="TreeView1" style="Z-INDEX: 101; LEFT: 39px; TOP: 68px" runat="server"></iewc:TreeView></FONT>
    </form>
    </body>
    </HTML>
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim ds As New DataSet()
    Dim CN As New SqlConnection()
    Try
    '初始化连接字符串
    CN.ConnectionString =
    "data source=pmserver;initial catalog=Benchmark;persist security info=False;user id=sa;Password=sa;"
    CN.Open()
    Dim adp As SqlDataAdapter = New SqlDataAdapter("select * from tbTree", CN)
    adp.Fill(ds)
    Me.ViewState("ds") = ds
    Catch ex As Exception
    #If DEBUG Then
    Session("Error") = ex.ToString()
    Response.Redirect("error.aspx") '̀跳转程序的公共错误处理页面
    #End If
    Finally
    '关闭连接
    CN.Close()
    End Try
    '调用递归函数,完成树形结构的生成
    AddTree(0, Nothing)
    End Sub

    '递归添加树的节点
    Private Sub AddTree(ByVal ParentID As Integer, ByVal pNode As TreeNode)
    Dim ds As DataSet
    ds = Me.ViewState("ds")
    Dim dvTree As New DataView()
    dvTree = New DataView(ds.Tables(0))
    '过滤ParentID,得到当前的所有子节点
    dvTree.RowFilter = "PARENTID = " + ParentID.ToString

    Dim Row As DataRowView
    For Each Row In dvTree
    Dim Node As New TreeNode()
    If pNode Is Nothing Then '判断是否根节点
    '添加根节点
    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)
    End If
    Next
    End Sub
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using Microsoft.Web.UI.WebControls;
    using System.Data.SqlClient;
    namespace TreeCS
    {
    ///
    /// WebForm1 的摘要说明
    ///
    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=sa;";
    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
    }
    }
  • 相关阅读:
    codeforces 616B Dinner with Emma
    codeforces 616A Comparing Two Long Integers
    codeforces 615C Running Track
    codeforces 612C Replace To Make Regular Bracket Sequence
    codeforces 612B HDD is Outdated Technology
    重写父类中的成员属性
    子类继承父类
    访问修饰符
    方法的参数
    实例化类
  • 原文地址:https://www.cnblogs.com/fuyingke/p/429179.html
Copyright © 2011-2022 走看看