C#動態產生樹型結構的Web程式設計

來源:互聯網
上載者:User
摘 要 本文介紹一種基於web方式BS應用模式下,使用C#.net編程工具實現oracle資料庫記錄自動產生TreeView樹型結構的程式設計。

  關鍵詞 c# ;動態;樹型;程式設計

  許多應用軟體的程式設計,我們都希望能像Windows資源管理員那樣將其磁碟機和其下的檔案及檔案夾按照階層來安排。在C/S條件下這些很容易實現,那麼在B/S的Web方式下,我們實現起來就不是特別容易。針對這個問題,在 2002 年,Microsoft? 發布了四種 ASP.NET Web 控制項,用於為使用 Microsoft Internet Explorer 的 Web 存取者提供更好的體驗。這些 Web 控制項稱為 Internet Explorer Web 控制項,也簡稱為 IE Web 控制項,其中就包含了TreeView Web 控制項 ,它就為我們提供了一種按階層顯示資訊的方式。TreeView控制項包含了稱做“節點”(node)的一些條目的一個列表。每一個節點都可以有自己的節點集合,從而提供了一種更深層的資料定義。每個節點都可以被摺疊起來,從而允許訪問者在一個TreeView控制項中尋找,只看他所感興趣的那一級的資料。就像Windows的資源管理員一樣。只不過在使用前要安裝IE Web Controls,並配置好運行環境後才能使用,使用Visual Studio .NET,則靜態指定 TreeView 結構就像填寫幾份表格一樣簡單。

  雖然使用 Visual Studio .NET 將靜態 TreeNote 添加到 TreeView 的過程非常簡單,但通常需要將內容動態地添加到 TreeView 中。例如,您將分類樹資訊儲存到了資料庫中,或是正在設計一個資源管理員風格的 Web 應用程式(在此應用程式中,使用者可以瀏覽 Web 服務器的檔案系統),這時您可能需要根據伺服器的檔案夾和檔案來動態填充 TreeNote。本文就是使用C#.net語言通過編程方式,配合Oracle資料庫實現一種動態效果,達到動態將TreeNote 添加到 TreeView 的目的。

  1、 設計思路和方法

  該程式設計思路和方法是:通過編程方式將TreeNote 添加到 TreeView 中。要將新的 TreeNote 添加到現有的 TreeNote 中,只需要使用 Nodes 屬性的 Add() 方法。方法是使用 C# 代碼將建立兩個 TreeNote,並將第二個 TreeNote 添加為第一個 TreeNote 的子節點。然後,將第一個子節點添加到 TreeView 的根節點中。

  2、開發執行個體及程式源碼

  2.1 使用前資料庫和IE Web控制項的準備工作

  1)假如我們要建立如的數型結構
        
圖 1

  圖1說明:器材管理、工地資訊、公用資訊是根節點,其餘是子節點。

  2)在oracle資料庫中建立如表的資料庫表及欄位

圖 2
圖2 說明:在資料庫中設計欄位時將菜單等級確定下來,用流水號來表示唯一性。

圖 3
圖3說明:器材管理根節點的子節點,所屬主單序號001表明它要產生在器材管理之下。

圖 4

圖4說明:工地資訊根節點的子節點,所屬主單序號002表明它要產生在工地資訊之下。

圖 5

圖5說明:公用資訊根節點的子節點,所屬主單序號005表明它要產生在公用資訊之下。

3)IE Web控制項的準備工作

  IE Web 控制項可以在安裝了 .NET Framework 版本 1.0 或 1.1 的 Web 服務器上使用,在內含代碼的類中使用 IE Web 控制項,首先需要右擊 Reference(引用),然後選擇 Add Reference(添加引用),將引用添加到 Microsoft.Web.UI.WebControls.dll 程式集中。然後,在內含代碼的類中,如果使用的是 C# ,則添加 using Microsoft.Web.UI.WebControls;

  2.2 介面和程式設計

  1) 上傳設計

  1.1) Web介面如下

圖 6

  圖6說明:在介面上對應設定控制項TreeView1.

  1.2) 動態產生TreeView原始碼

 1using Microsoft.Web.UI.WebControls;//添加控制項的引用
 2
 3private void GetTreeView()//程式開始
 4{
 5 try
 6 {
 7  string strSql = "SELECT DISTINCT Menu_id,Menu_name from docmodulemanager where Menu_level = 1 and sn in
 8
 9  ("+All.Substring(0,All.Length-1).ToString()+")";
10  OracleDataAdapter
11  objAdapter = new OracleDataAdapter(strSql,objConn);
12  DataSet ds = new DataSet();
13  ds.Clear ();
14  objAdapter.Fill(ds,"temp");
15  DataTable dt = ds.Tables["temp"];
16  TreeView1.Nodes.Clear();
17  //建立根節點,遍曆。
18
19  foreach(DataRow dr in dt.Rows)
20  {
21   TreeNode Root = new TreeNode();
22   Root.Text = dr["Menu_name"].ToString();
23   TreeView1.Nodes.Add(Root);//建立根節點
24   string str = "SELECT Menu_name,menu_addr,sn from docmodulemanager where upper_id = '" + dr["Menu_id"].ToString() + "' and sn in ("+menu_sn.Substring(0,menu_sn.Length-1).ToString()+")"+"order by menu_id,child_id";
25
26   OracleDataAdapter objAdapterNode = new OracleDataAdapter(str,objConn);
27   DataSet dsNode = new DataSet();
28   dsNode.Clear ();
29   objAdapterNode.Fill(dsNode,"tempNode");
30   DataTable dtNode = dsNode.Tables["tempNode"];
31
32  //建立子節點,遍曆。
33
34  foreach(DataRow drNode in dtNode.Rows)
35  {
36   TreeNode Node = new TreeNode();
37   Node.Text = drNode["Menu_name"].ToString();
38   Node.Target = "mainbottom";
39   string Path = drNode["menu_addr"].ToString();
40   int menusn = Convert.ToInt32(drNode["sn"].ToString());
41   Node.NavigateUrl = "Transfer.aspx"+"?menu_addr="+ Path;
42   Root.Nodes.Add(Node);//建立子節點
43  }
44 }
45}
46catch
47{
48 Response.Write(" alert('您沒有可操作的功能表項目,請與管理員聯絡!'); ");
49}
50finally
51{
52 if (objConn.State.ToString().Equals ("Open")) objConn.Close();
53}
54}
55 
56

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.