杨应红的WEB技术文档
WEB相关技术

首先,我们在SQL SERVER 2000里建立一个表tbTree,表的结构设计如下:
列名 数据类型 描述  长度 主键
ID Int 节点编号  4 是
ParentID Int 父节点编号  4 
ConText Nvarchar 我们要显示的节点内容 50
//••••••••••
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
 }
}

posted on 2006-11-26 14:53  落尘  阅读(205)  评论(0)    收藏  举报