程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> TreeView的動態顯示及利用框架實現導航

TreeView的動態顯示及利用框架實現導航

編輯:關於ASP.NET

在Asp.net中我們知道TreeView控件可以實現站點導航功能,利用模板加上站點地圖作為TreeView的DataSource就可以實現輕松的導航功能。我本次所要實現的導航拋開了模板和站點地圖,利用框架動態實現導航。

我們知道,TreeView控件可以靜態的預定義其結構,支持的數據源控件有XmlDataSource 和 SiteMapDataSource ,並不支持sqldatasource控件。這次我們的數據源正是數據庫,所以我們可以動態的填充TreeView的節點。在實現TreeView的動態填充節點後,我們可以利用iframe框架,來實現導航。

一.對TreeView控件本次所要用到的屬性及事件的介紹

1.TreeNode.SelectAction屬性:獲取或設置選擇節點時引發的事件,此屬性的值為TreeNodeSelectAction 值之一,默認為TreeNodeSelectAction.Select。TreeView的文本節點可以處於兩種模式之一,默認情況下,會有一個節點處於選定狀態,即TreeNodeSelectAction.Select,此模式下引發SelectedNodeChanged事件,引發後節點只會展開,不會折疊。若要使一個節點處於導航模式,可以把該節點的 NavigateUrl 屬性值設置為空字符串 ("") 以外的值。若要使節點處於選擇模式,可以把節點的 NavigateUrl 屬性設置為空字符串。

2.TreeNode.PopulateOnDemand屬性:該屬性只為bool類型,獲取或設置一個值,該值指示是否動態填充節點,默認為false。當節點的 PopulateOnDemand 屬性設置為 true 時,在運行階段展開節點時通過回發事件填充節點。若要動態填充節點,必須為 TreeNodePopulate 事件定義填充節點的事件處理方法。

3.TreeNode.TreeNodePopulate事件:當節點的 PopulateOnDemand 屬性設置為 true 時,可以觸發該事件,以編程的方式動態填充節點。

二.實現TreeView的動態填充節點.

1.由於是獲取數據裡面的數據,於是寫了個SqlHelper類,我前面的一篇文章詳細敘述過,裡面同樣介紹了數據庫的關系圖,感興趣的朋友可以參考對DataList控件綁定圖片的一點小結 裡的部分內容,這裡為了不影響閱讀,把代碼還是貼出來了:

DALHelper類

1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using System.Configuration;
6using System.Data;
7using System.Data.SqlClient;
8namespace DBHelper
9{
10    public class DALHelper
11    {
12        private static string constr = ConfigurationManager.ConnectionStrings["MyNBAData"].ConnectionString;
13        private static SqlConnection connection = new SqlConnection(constr);
14
15        /**//// <summary>
16        /// 檢查連接是否打開
17        /// </summary>
18        public static bool CheckConnOpen()
19        {
20            if (connection == null || connection.State == ConnectionState.Closed)
21            {
22                connection.Open();
23                return true;
24            }
25            else
26            {
27                return false;
28            }
29        }
30        /**//// <summary>
31        /// 檢查連接是否關閉
32        /// </summary>
33        public static bool CheckConnClosed()
34        {
35            if (connection != null || connection.State == ConnectionState.Open)
36            {
37                connection.Close();
38                return true;
39            }
40            else
41            {
42                return false;
43            }
44        }
45
46        /**//// <summary>
47        /// 獲取一個DataTable
48        /// </summary>
49        /// <param name="sql"></param>
50        /// <returns></returns>
51        public static DataTable GetDataTable(string sql)
52        {
53            SqlDataAdapter da = null;
54            DataTable dt = null;
55            try
56            {
57                da = new SqlDataAdapter(sql, connection);
58                dt = new DataTable();
59                da.Fill(dt);
60            }
61            catch (Exception ex)
62            {
63
64                throw new Exception(ex.Message);
65            }
66
67            return dt;
68        }
69
70     /**//// <summary>
71     /// 獲取DataReader對象
72     /// </summary>
73     /// <param name="sql"></param>
74     /// <param name="parms"></param>
75     /// <returns></returns>
76        public static SqlDataReader ExecuteReader(string sql, SqlParameter[] parms)
77        {
78            SqlCommand command= null;
79            SqlDataReader reader = null;
80            try
81            {
82                command = new SqlCommand(sql, connection);
83                if (parms!=null)
84                {
85                    foreach (var item in parms)
86                    {
87                        command.Parameters.Add(item);
88                    }
89                }
90                if( CheckConnOpen())
91                {
92                    reader = command.ExecuteReader(CommandBehavior.CloseConnection);
93                }
94
95
96            }
97            catch (Exception ex)
98            {
99
100                throw new Exception(ex.Message);
101            }
102            finally
103            {
104               //CheckConnClosed();
105            }
106            return reader;
107        }
108
109        /**//// <summary>
110        /// 執行數據庫的修改,插入,刪除
111        /// </summary>
112        /// <param name="sql"></param>
113        /// <param name="parms"></param>
114        /// <returns></returns>
115        public static int ExecuteNonQuery(string sql, SqlParameter[] parms)
116        {
117            SqlCommand command = null;
118            int count = 0;
119            try
120            {
121                command = new SqlCommand(sql, connection);
122                if (parms!=null)
123                {
124                    foreach (var item in parms)
125                    {
126                        command.Parameters.Add(item);
127                    }
128                }
129
130                CheckConnOpen();
131                count = command.ExecuteNonQuery();
132            }
133            catch (Exception ex)
134            {
135
136                throw new Exception(ex.ToString());
137            }
138            finally
139            {
140                CheckConnClosed();
141            }
142            return count;
143        }
144    }
145}
146

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved