日期:2011-02-02 浏览次数:20701 次
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