国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ASP.NET 2.0的導航控件treeview和menu的實例_.Net教程

2024-07-10 12:50:21
字體:
來源:轉載
供稿:網友

推薦:七招制勝ASP.NET應用程序開發
隨著微軟.NET的流行,ASP.NET越來越為廣大開發人員所接受。作為ASP.NET的開發人員,我們不僅需要掌握其基本的原理,更要多多實踐,從實踐中獲取真正的開發本領。在我們的實際開發中,往往基本的

ASP.net2.0 為用戶提供了treeview和menu導航控件,使用十分方便,極大提高了用戶開發項目的速度和效率。

尤其是treeview和menu綁定web.sitemap之類的XML文件,形成層次數據非常便捷。

但我在項目開發過程中,很多地方是需要綁定關系數據庫,畢竟關系數據庫是最常用、操作最方便的存儲形式。

對于treebview與關系數據庫綁定可以動態綁定,也就是在page_load事件中首先添加第一級節點,然后在treeview的SelectedNodeChanged事件中進行判斷添加下一級節點。因為使用AJAX技術后,把treeview控件放在UpdatePanel控件之內,用戶的頁面體驗效果相當不錯。

然而對于menu控件,這樣就有麻煩了,因為我發現menu在UpdatePanel控件中有問題:就是移動鼠標后原來的菜單項會遺留在屏幕上,直到單擊新的菜單項(不知道是bug,還是我哪里出現問題)。也許有人覺得menu不要動態綁定,直接綁定XML做成靜態的多好!但在做項目時需要不同的用戶登陸后出現的菜單效果不同,而在web.sitemap中roles角色控制又不是十分便利,所以使用關系數據庫直接對menu菜單項的enabled進行賦值,控制更加靈活。

因為有bug,只能把menu控件放在UpdatePanel控件之外,對menu的綁定就要在page_load事件中一次性綁定,如果使用menu控件的MenuItemClick事件綁定,那么用戶受不了這樣的體驗!

實現的效果如下:

具體實現代碼如下:

以下為引用的內容:

default.aspx

1<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default4.aspx.vb" Inherits="Default4" %>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml" >
4<head runat="server">
5 <title>導航控件測試</title>
6</head>
7<body>
8 <form id="form1" runat="server">
9
10
11 <asp:Menu ID="Menu1"
12 runat="server"
13 disappearafter="2000"
14 staticsubmenuindent="10px"
15 orientation="Horizontal"
16 StaticEnableDefaultPopOutImage="False"
17 BackColor="#E3EAEB"
18 DynamicHorizontalOffset="2"
19 Font-Names="宋體"
20 Font-Size="14px"
21 ForeColor="#666666" >
22 <StaticMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" />
23 <DynamicHoverStyle BackColor="#666666" ForeColor="White" />
24 <DynamicMenuStyle BackColor="#E3EAEB" />
25 <StaticSelectedStyle BackColor="#E3EAEB" />
26 <DynamicSelectedStyle BackColor="#E3EAEB" />
27 <DynamicMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" />
28 <StaticHoverStyle BackColor="#666666" ForeColor="White" />
29 </asp:Menu>
30
31 </form>
32</body>
33</html>
default.aspx.vb

1Imports System
2Imports System.Data
3Imports System.Data.SqlClient
4Partial Class Default4Class Default4
5 Inherits System.Web.UI.Page
6 Public strConn, strSQL As String
7 Dim myConn As SqlConnection
8 Dim mydv As DataView
9 Dim i As Integer
10 Dim menunode As MenuItem
11 Protected Sub Page_Load()Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
12 strConn = System.Configuration.ConfigurationManager.AppSettings("connstring")
13 myConn = New SqlConnection(strConn)
14
15 If Not Page.IsPostBack Then
16 strSQL = "select * from menu "
17 mydv = GetDataView(strSQL, "menu")
18 mydv.RowFilter = "parentid=0"
19 For i = 0 To mydv.Count - 1
20 menunode = New MenuItem
21 menunode.Text = mydv.Item(i).Item("text")
22 menunode.Value = mydv.Item(i).Item("id")
23 menunode.Enabled = mydv.Item(i).Item("Enabled")
24 menunode.Target = mydv.Item(i).Item("Target")
25 menunode.NavigateUrl = mydv.Item(i).Item("url")
26 Menu1.Items.Add(menunode)
27 addnode(menunode, menunode.Value)
28 mydv.RowFilter = "parentid=0"
29 Next
30 End If
31 End Sub
32
33 Sub addnode()Sub addnode(ByVal pnode As MenuItem, ByVal pid As Integer)
34 Dim menunode As MenuItem
35 Dim j As Integer
36 mydv.RowFilter = "parentid=" & pid
37 For j = 0 To mydv.Count - 1
38 menunode = New MenuItem
39 menunode.Text = mydv.Item(j).Item("text")
40 menunode.Value = mydv.Item(j).Item("id")
41 menunode.Enabled = mydv.Item(j).Item("Enabled")
42 menunode.Target = mydv.Item(j).Item("Target")
43 menunode.NavigateUrl = mydv.Item(j).Item("url")
44 pnode.ChildItems.Add(menunode)
45 addnode(menunode, menunode.Value)
46 mydv.RowFilter = "parentid=" & pid
47 Next
48
49 End Sub
50
51 Function GetDataView()Function GetDataView(ByVal Sql As String, ByVal strTable As String) As DataView
52 Dim myDataAdapter As SqlDataAdapter
53 Dim myDataSet As DataSet
54 myConn.Open()
55 myDataAdapter = New SqlDataAdapter(Sql, myConn)
56 myConn.Close()
57 myDataSet = New DataSet
58 myDataAdapter.Fill(myDataSet, strTable)
59 GetDataView = New DataView(myDataSet.Tables(strTable))
60 End Function
61
62
63End Class
64

數據庫結構如下:

上面實現的關鍵是:

1、addnode遞歸過程,實現下級節點的添加;

2、DataView的RowFilter屬性,mydv.RowFilter = "parentid=" & pid,篩選出某節點的下級節點,進行添加。

以上代碼,沒有優化,也不一定是最好的,希望拋磚引玉!

分享:投票結果的圖片進度條顯示
一個投票功能模塊少不了查看投票結果,用進度條顯示各個投票結果可以起到一目了然的效果。以下是我的方法,請大家不吝賜教:1、做一張圖片用于做進度條,只需要很小的一個圖片就可以了,如高2

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 石景山区| 施秉县| 股票| 崇仁县| 松潘县| 会泽县| 苏尼特右旗| 德化县| 泸西县| 芷江| 临朐县| 白朗县| 甘孜| 甘孜| 同江市| 虞城县| 云浮市| 叙永县| 慈利县| 宝丰县| 阿拉善左旗| 城步| 文登市| 宜宾市| 娄底市| 灵台县| 定边县| 分宜县| 比如县| 张家口市| 安龙县| 白城市| 闵行区| 周至县| 谢通门县| 延长县| 望江县| 肃宁县| 弥渡县| 双鸭山市| 稻城县|