using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;  
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;namespace myoa
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Data.OleDb.OleDbConnection oleDbConnection1;
protected System.Data.OleDb.OleDbDataAdapter oleDbDataAdapter1;
protected System.Data.DataSet dataSet1;
protected Microsoft.Web.UI.WebControls.TreeView TreeView1;
DataSet ds=new DataSet();
public string objConn;
//public string objConn ="Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+"\\dATABASE\\myoa.mdb";
OleDbConnection MyConn;
OleDbDataAdapter mycommand; private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
//TreeView1.Width=100;
//TreeView1.Height=450;   
objConn ="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Server.MapPath("dATABASE\\myoa.mdb");
string NodeText="-1";
MyConn=new OleDbConnection(objConn);  
mycommand=new OleDbDataAdapter("select * from tree where TreeNode='"+NodeText+"' order by NodeNumber asc",MyConn);
MyConn.Open();
mycommand.Fill(ds);
int i;
//===根结点数
for(i=0;i<ds.Tables[0].Rows.Count;i++)
{
Microsoft.Web.UI.WebControls.TreeNode myTreeNode=new Microsoft.Web.UI.WebControls.TreeNode();
//dim myTreeNode as new Microsoft.Web.UI.WebControls.TreeNode()
myTreeNode.Text=ds.Tables[0].Rows[i].ItemArray[1].ToString() ;
myTreeNode.ImageUrl="images/closedfolder.gif";
myTreeNode.ExpandedImageUrl="images/openfolder.gif";
myTreeNode.NavigateUrl="Query.aspx?NodeText="+myTreeNode.Text;
myTreeNode.Target="mainFrame";
TreeView1.Nodes.Add(myTreeNode);
//Response.Write( ds.Tables[0].Rows[i].ItemArray[0].ToString());
//Response.Write("<br/>");
//Response.Write( ds.Tables[0].Rows[i].ItemArray[1].ToString());
CreateChildTree(myTreeNode,ds.Tables[0].Rows[i].ItemArray[0].ToString() ,ds.Tables[0].Rows[i].ItemArray[1].ToString() );
}
//end sub
}
public void CreateChildTree(Microsoft.Web.UI.WebControls.TreeNode ParentNode,string NodeId ,string ParentNodeText)
{
mycommand=new OleDbDataAdapter("select * from tree where TreeNode='"+NodeId+"' order by NodeNumber desc",MyConn);
//MyConn.Open();
mycommand.Fill(ds,"second");
int i;
for(i=0;i<ds.Tables["second"].Rows.Count;i++)
{
Microsoft.Web.UI.WebControls.TreeNode myTreeNode=new Microsoft.Web.UI.WebControls.TreeNode();
myTreeNode.Text=ds.Tables["second"].Rows[i].ItemArray[1].ToString();  
myTreeNode.ImageUrl="images/book.gif";
string myTreeNodeText =myTreeNode.Text;
string ParentNodeTextS =ParentNodeText;
//myTreeNodeText=Server.UrlEncode(myTreeNodeText);
//ParentNodeTextS=Server.UrlEncode(ParentNodeTextS);
myTreeNode.NavigateUrl="Query.aspx?NodeText="+myTreeNodeText+"&ParentNodeText="+ParentNodeTextS;
myTreeNode.Target="mainFrame";
ParentNode.Nodes.Add(myTreeNode);

}
ds.Tables["second"].Clear(); 
} #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.oleDbConnection1 = new System.Data.OleDb.OleDbConnection();
this.oleDbDataAdapter1 = new System.Data.OleDb.OleDbDataAdapter();
this.dataSet1 = new System.Data.DataSet();
((System.ComponentModel.ISupportInitialize)(this.dataSet1)).BeginInit();
// 
// dataSet1
// 
this.dataSet1.DataSetName = "NewDataSet";
this.dataSet1.Locale = new System.Globalization.CultureInfo("zh-CN");
this.Load += new System.EventHandler(this.Page_Load);
((System.ComponentModel.ISupportInitialize)(this.dataSet1)).EndInit(); }
#endregion
} //public Sub resize()
}

解决方案 »

  1.   

    初始化页面节点的代码:       
    Private Sub initTree(ByVal nds As TreeNodeCollection, ByVal parentID As Integer)
                Dim dv As New DataView()
                Dim tmpNd As TreeNode
                Dim strId As Integer
                dv.Table = ds.Tables("TitleTree")
                dv.RowFilter = "parentid='" + parentID.ToString() + "'"
                Dim objRow As DataRowView            For Each objRow In dv
                    tmpNd = New TreeNode()
                    strId = CInt(objRow("nodeid"))
                    tmpNd.ID = strId.ToString()
                    tmpNd.Text = objRow("nodename").ToString()
                    tmpNd.ExpandedImageUrl = objRow("imgex").ToString()
                    tmpNd.ImageUrl = objRow("img").ToString()
                    tmpNd.NavigateUrl = objRow("address").ToString()
                    nds.Add(tmpNd)
                    initTree(nds(nds.Count - 1).Nodes, strId)
                Next        End Sub生成节点表的脚本文件:
    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[visit_TitleTree]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[visit_TitleTree]
    GOCREATE TABLE [dbo].[visit_TitleTree] (
    [parentid] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [nodeid] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [nodename] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [imgex] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [img] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [address] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL 
    ) ON [PRIMARY]
    GO
      

  2.   

    我照你的写法做了一个,却提示找不到TreeNodeCollection类的命名空间,不知为何?此类用在public void initTree(TreeNodeCollection nds,int parentID)声明中。
      

  3.   

    using Microsoft.Web.UI.WebControls;
      

  4.   

    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; Dbconnection obj = new Dbconnection(myConst.ConnString);
    string sql = "select * from people where teacher='博士生导师'";
    SqlDataReader rs = obj.executeQuery(sql);
    while(rs.Read())
    {
    creatNode(rs["realname"].ToString(),rs["id"].ToString(),rs["id"].ToString(),getNode("博士生导师",people.Nodes));
    sql="select * from people where (degree='博士' or degree='博士后') and follow=" + rs["id"].ToString();
    SqlDataReader rs1 = objDoctor.executeQuery(sql);
    if(rs1.Read())
    {
    creatNodeNoUrl("博士研究生",rs["id"].ToString() + "doctor",getNode(rs["id"].ToString(),people.Nodes));
    creatNode(rs1["realname"].ToString(),rs1["id"].ToString() + "indoctor",rs1["id"].ToString(),getNode(rs["id"].ToString() + "doctor",people.Nodes));
    while(rs1.Read())
    {
    creatNode(rs1["realname"].ToString(),rs1["id"].ToString() + "indoctor",rs1["id"].ToString(),getNode(rs["id"].ToString() + "doctor",people.Nodes));
    }
    }
    rs1.Close();

    sql="select * from people where degree='硕士' and follow=" + rs["id"].ToString();
    rs1 = objMaster.executeQuery(sql);
    if(rs1.Read())
    {
    creatNodeNoUrl("硕士研究生",rs["id"].ToString() + "master",getNode(rs["id"].ToString(),people.Nodes));
    creatNode(rs1["realname"].ToString(),rs1["id"].ToString() + "inmaster",rs1["id"].ToString(),getNode(rs["id"].ToString() + "master",people.Nodes));
    while(rs1.Read())
    {
    creatNode(rs1["realname"].ToString(),rs1["id"].ToString() + "inmaster",rs1["id"].ToString(),getNode(rs["id"].ToString() + "master",people.Nodes));
    }
    }
    rs1.Close();
    }
    rs.Close();
    注:
    1.
    /// <summary>
    /// 增加一个节点
    /// </summary>
    /// <param name="text">节点显示内容</param>
    /// <param name="id">节点id</param>
    /// <param name="urlId">节点的URL</param>
    /// <param name="p_tn">父节点</param>
    private void creatNode(string text,string id,string urlId,TreeNode p_tn)2.
    /// <summary>
    /// 增加一个没有url连接的节点
    /// </summary>
    /// <param name="text">节点内容</param>
    /// <param name="id">节点id</param>
    /// <param name="p_tn"></param>
    private void creatNodeNoUrl(string text,string id,TreeNode p_tn)
    3.
    /// <summary>
    /// 取得一个节点
    /// </summary>
    /// <param name="id">节点id</param>
    /// <param name="tnc">查询的节点范围</param>
    /// <returns></returns>
    private TreeNode getNode(string id,TreeNodeCollection tnc)

    这三个函数自己实现,很简单的!