All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
C#,3.0新特性初步研究,Part6:使用查询表达式_[Asp.Net教程]
利用PHP和CSS改变网页文字大小_php资料_编程技术
asp.net2.0服务器控件之TextBox控件
ASP.NET2.0学习-
C#箴言:定义常量的两种方法_[Asp.Net教程]
Asp.net实例:实现图片上传_[Asp.Net教程]
PHP防注入攻击过滤HTML代码函数_[PHP教程]
让我们来编写一些PHP实用的脚本_php资料_编程技术
升级到SQL Server 2005的常见问题解答_[SQL Server教程]
PHP5中PDO的简单使用_php资料_编程技术
Reading number is top 10 pictures
乳娘帕梅拉安德森1
A beautiful girl to bud1
Seductive beauty of crime1
Group of female porn in 《westwards》, uninhibited woman threatened to not the bottom line1
Sora aoi on twitter1
The real super beauty8
China's ambassador to Libya embassy was shock, and the glass is broken in
Sexy women in 2013--1
A resort photographed beautiful young woman change clothes process vomiting blood2
性感丰满身材火爆de美女2
Download software ranking
VC++6.0培训教程
matrix3
Ashlynn Video5
Photoshop 8.0图象编辑软件
Love the forty days
网络管理员第三版
SP3 for SQL2000
圣殿祭司的ASP.NET.2.0.开发详解-使用C#
功夫熊猫2(上集)
Kung.Fu.Panda.2
aaa published in(发表于) 2013/12/17 7:45:37 Edit(编辑)
ASP.NET,2.0的导航控件treeview和menu的实例_.net资料_编程技术

ASP.NET,2.0的导航控件treeview和menu的实例_.net资料_编程技术

ASP.NET 2.0的导航控件treeview和menu的实例_.net资料_编程技术-你的首页-uuhomepage.com

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" %>
2http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3http://www.w3.org/1999/xhtml" >
4
5 导航控件测试
6
7
8
9
10
11 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
23
24
25
26
27
28
29

30
31
32
33


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,筛选出某节点的下级节点,进行添加。


以上代码,没有优化,也不一定是最好的,希望抛砖引玉!





添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.