天天看點

C#.Net中TreeView控件應用詳解!

雖然網上有很多關于TreeView應用的詳細資料和源碼,但是寫得都比較籠統和模糊,看不太懂,可能是文字太多了也不想去看,隻好自己琢磨了!我将我在項目中應用TreeView時遇到的疑問和心得體會記錄如下:

1.安裝和引用控件。

可以到微軟網站上下載下傳"IEWebControls.exe"安裝程式,或在baidu或google上搜一下即可很容易找到這個安裝程式。下載下傳到本機後運作"IEWebControls.exe",預設安裝在系統盤的Program Files檔案夾下,在Program Files檔案夾下找到IE Web Controls檔案夾。

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 System.Data.OracleClient;

using Microsoft.Web.UI.WebControls;

//using XJSys.DataBase;

namespace XJSys

{

 /// <summary>

 /// Left 的摘要說明。

 /// </summary>

 public class Left : System.Web.UI.Page

 {

  protected Microsoft.Web.UI.WebControls.TreeView XJTV;

        //public DB DataConn=new DB(); 

  public OracleConnection Conn = new OracleConnection(ConnStr);

  //private void Page_Load(object sender, System.EventArgs e)

  //{

   //在此處放置使用者代碼以初始化頁面

  //}

  DataSet ds=new DataSet();

  private void Page_Load(object sender, System.EventArgs e)

  {

   // 在此處放置使用者代碼以初始化頁面

   if(!Page.IsPostBack)

   {

    //建立DataSet對象

    string Message="";

    OracleCommand CmdDS= new OracleCommand("select * from TModel where MKJB='2'",Conn);

    OracleDataAdapter adp = new OracleDataAdapter(CmdDS);

    adp.Fill(ds);

    if(ds.Tables[0].Rows.Count >0)

    {

     Message="1";

    }

    else

    {

     Message="0";

    }

    ds.Dispose();

    //建立DataReader對象

    OracleCommand Cmd=new OracleCommand("select * from XJ_TModel where MKJB='1'",Conn);

    Conn.Open();

    OracleDataReader OraDataReader=Cmd.ExecuteReader();

    while(OraDataReader.Read())

    {

     TreeNode tmpNr = new TreeNode();

     tmpNr.ID = OraDataReader["MKBH"].ToString();

     tmpNr.Text = OraDataReader["MKMC"].ToString();

     tmpNr.Target = "main";

     tmpNr.NavigateUrl = OraDataReader["MKLJ"].ToString();

     tmpNr.Expanded = true;

     XJTV.Nodes.Add(tmpNr);

     if (Message=="1")

     {

      InitTreeView(tmpNr);

     }

    }

    Conn.Close();

   }

  }

  #region Web 窗體設計器生成的代碼

  override protected void OnInit(EventArgs e)

  {

   //

   // CODEGEN: 該調用是 ASP.NET Web 窗體設計器所必需的。

   //

   InitializeComponent();

   base.OnInit(e);

  }

  /// <summary>

  /// 設計器支援所需的方法 - 不要使用代碼編輯器修改

  /// 此方法的内容。

  /// </summary>

  private void InitializeComponent()

  {   

   this.XJTV.DataBinding += new System.EventHandler(this.XJTV_DataBinding);

   this.Load += new System.EventHandler(this.Page_Load);

  }

  #endregion

  public void InitTreeView(TreeNode tmpNr)

  {

   foreach(DataRow dr in ds.Tables[0].Rows)

   {

    if(dr["HIDEID"].ToString() == tmpNr.ID)

    {

     TreeNode tmpNd = new TreeNode();

     tmpNd.ID = dr["MKBH"].ToString();

     tmpNd.Text = dr["MKMC"].ToString();

     tmpNd.Target = "main";

     tmpNd.NavigateUrl = dr["MKLJ"].ToString();

     tmpNr.Nodes.Add(tmpNd);

     InitTreeView(tmpNd);

    }    

   }

  }

  private void XJTV_DataBinding(object sender, System.EventArgs e)

  {

  }

 }

}

繼續閱讀