数据表:
表一:(树的一级结点)
ProNumber       ProName
1          nihao
2          tahao
3          wohao
4          hho
表二:(树的二级结点)
SonID name ProNumber
1 nihao      1         
2 dajia      2         
3 gsff       3         
4 ddffg      4         
5 ni         1         
6 fffdg      2         
7 3er        4         
表三:(树的三级结点)
ID name SonID
1 trt 1
2 erer 2
3 rte 3
4 rtrt 4
5 erew 5
6 55 3
7 3343 2



//代码:
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;namespace MyProject
{
/// <summary>
/// LeftTreeViewForm 的摘要说明。
/// </summary>
public class LeftTreeViewForm : System.Web.UI.Page
{
protected Microsoft.Web.UI.WebControls.TreeView InforTree;
    
protected DataSet ds1;
protected DataSet ds2;
protected DataSet ds3;
protected System.Web.UI.WebControls.Label Node_Infor;
//string str;
        public string str;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
this.CreateTree();

} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{    
this.InforTree.SelectedIndexChange += new Microsoft.Web.UI.WebControls.SelectEventHandler(this.SelectChange);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion
public void GetDs()
{
DataBaseOp db = new DataBaseOp();
db.ConnectionToDb();
            ds1 = new DataSet();
ds2 = new DataSet();
ds3 = new DataSet(); string str1 = "select ProNumber,ProName from ProjectTable;";
ds1 = db.GetDataSet(str1);
this.ViewState["ds1"]=ds1; string str2 = "select * from SonProjectTable;";
ds2 = db.GetDataSet(str2);
this.ViewState["ds2"]=ds2; string str3 = "select *from ThirdProjectTable;";
ds3 = db.GetDataSet(str3);
this.ViewState["ds3"]=ds3;
} public void BindRootData()
{
DataSet ds1=(DataSet)this.ViewState["ds1"];
DataView dv=new DataView(ds1.Tables[0]); foreach(DataRowView row in dv)
{
Microsoft.Web.UI.WebControls.TreeNode nd = new Microsoft.Web.UI.WebControls.TreeNode();
nd.Text = row["ProName"].ToString();
nd.ID= row["ProNumber"].ToString();
//nd.Expanded = true;

InforTree.Nodes.Add(nd);
}
   ds1.Clear();
} public void BindSonData()
{
DataSet ds2=(DataSet)this.ViewState["ds2"];
DataView dv=new DataView(ds2.Tables[0]); DataSet ds3=(DataSet)this.ViewState["ds3"];
DataView dv1=new DataView(ds3.Tables[0]); foreach(DataRowView row in dv)
{
Microsoft.Web.UI.WebControls.TreeNode sonnode = new Microsoft.Web.UI.WebControls.TreeNode();

sonnode.Text = row["name"].ToString();
sonnode.ID= row["SonID"].ToString();
//sonnode.Expanded = true;
    for(int i=0;i<InforTree.Nodes.Count;i++)
if(InforTree.Nodes[i].ID.Equals(row["ProNumber"].ToString()))
{
  InforTree.Nodes[i].Nodes.Add(sonnode);
      
foreach(DataRowView row2 in dv1)
{   Microsoft.Web.UI.WebControls.TreeNode Grandnode = new Microsoft.Web.UI.WebControls.TreeNode();
if(row2["SonID"].ToString()==sonnode.ID)
{
Grandnode.Text = row2["name"].ToString();
Grandnode.ID = row2["ID"].ToString();
                                sonnode.Nodes.Add(Grandnode);
}
}     }
             }
           ds2.Clear();
   ds3.Clear();
        }
public void CreateTree()
{
this.GetDs();
this.BindRootData();
this.BindSonData();
}
private void SelectChange(object sender, Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs e)
{
 //this.Node_Infor.Text = this.InforTree.Nodes[this.InforTree.SelectedNodeIndex.].Text;
 this.Node_Infor.Text = this.InforTree.GetNodeFromIndex(this.InforTree.SelectedNodeIndex).Text;
 this.Response.Write(this.Node_Infor.Text);
}
}
}属性设置:autopostback = true;实现点击结点后在lable中显示text,可是点击后出现错误:
  Attempted to add a TreeNode to a second TreeNodeCollection. A TreeNode can belong to only one TreeNodeCollection. Remove the TreeNode from its old collection before adding it to a new one. 
错误所在行:行 111: if(InforTree.Nodes[i].ID.Equals(row["ProNumber"].ToString()))
行 112: {
行 113: InforTree.Nodes[i].Nodes.Add(sonnode);(这行)
行 114:       
行 115: foreach(DataRowView row2 in dv1)
这些问题怎么改?