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
    }
    }
  • 相关阅读:
    python 协程
    python 打印乘法表
    python 线程池
    python 队列
    开发react 应用最好用的脚手架 create-react-app
    React面试题
    修改了背景透明度
    低门槛彻底理解JavaScript中的深拷贝和浅拷贝
    Web Worker 使用教程
    Vue2 实现时空穿梭框功能模块
  • 原文地址:https://www.cnblogs.com/fuyingke/p/429179.html
Copyright © 2011-2022 走看看