现在的位置: 首页 > 综合 > 正文

用数据库当中的表,以树的形式显示出来

2013年06月30日 ⁄ 综合 ⁄ 共 3818字 ⁄ 字号 评论关闭

数据表:
表一:(树的一级结点)
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);
  }
 }
}

抱歉!评论已关闭.