日期:2011-03-20  浏览次数:20473 次

摘要:越来越多的网页中使用到了菜单,一般说来,菜单制作的方法比较多,编程的语言基本上是javascript或者vbscript这两种,这种菜单一旦制作好就不能改变,修改起来比较麻烦。本文讲解webmenu控件,同时给出实例,讲菜单和数据库结合起来,实现动态的菜单。

前言:

下拉菜单技术常常在大型网站(如微软公司网站)中被用于网站导航,这样可有效的缩短浏览者定位至特定内容的时间。用Javascript或VBscript虽可实现该项效果,但需要学习脚本语言和DHTML。或者,还可以用Dreamweaver和CSS也能制作出(多级)下拉菜单。

对菜单的显示过程进行一下分析,可以发现以下几点:

1 当鼠标移动到文字(或图像)上,菜单显示;

2 鼠标从文字(或图像)上移开(除菜单外的位置),菜单消失;

3 鼠标从文字(或图像)移动到菜单上,菜单保持显示(这是关键);鼠标从菜单移开,菜单消失。

4 对于多级菜单还要保持上下级菜单的同步。

5当鼠标移动到菜单项目上,菜单项的外观(前景,背景或边框)变化。

这些特点实现了菜单的部分功能,某一些菜单功能无法通过或者不方便通过脚本语言来操作,例如,怎么来实现菜单的Disenable和Enable功能。还有怎么来实现菜单的“过程操作”(也就是没有点击“打开文件”,就无法进行“编辑”功能),这些方法均无法通过脚本来实现,同时脚本语句嵌入HTML语言中,结构复杂,写作麻烦,技术要求较高,不能迅速掌握,现在也有一些写作网页菜单的工具,通过软件操作,生成脚本,然后拷贝脚本到网页里,尽管这样也可以实现网页菜单,但是也无法实现上文所说的部分功能。

       第一部分:Web Munu控件

       在网上搜索到了一个很有用的控件,WebMenu for ASP.NET(http://www.coalesys.com),这个控件除了能够实现生成脚本语言的功能之外,就是还可以支持数据库操作,通过在数据库里设置一些属性的值,可以实现菜单的相关功能。而且该控件生成的脚本可以面向国中内核的浏览器,做到了真正的兼容,使用起来没有后顾之忧。

       使用之前要注册。注册后就可以把注册码嵌入ASP.net的后台,以便分发部署的时候不会出错。Web Menu的License key是一个字符串,格式为:"用户名:公司名称:序列号"具体使用如下:

WebMenu.UserData = "John Doe:Acme Corp:1234567890";
 
//如果没有公司名称,使用方法如下:
WebMenu.UserData = "John Doe::1234567890";
 

具体使用这个控件的方法如下:

       1:拷贝DLL到解决方案的bin目录。

       2:在您的页面上注册。语句为:

<%@ Register TagPrefix="cswm" Namespace="Coalesys.WebMenu" Assembly="Coalesys.WebMenu" %>
 

       3:在页面上放置Web Menu对象。

<cswm:WebMenu
          ID = "QuickMenu"
          ClearPixelImage = "/images/clearpixel.gif"
          PopupIcon = "/images/popup.gif"
          SelectedPopupIcon = "/images/selectedpopup.gif"
          runat = "server">
</cswm:WebMenu>
 

       4:添加菜单组和菜单项。

<cswm:WebMenu
          ID = "QuickMenu"
          ClearPixelImage = "/images/clearpixel.gif"
          PopupIcon = "/images/popup.gif"
          SelectedPopupIcon = "/images/selectedpopup.gif"
          runat = "server">
 
          <cswm:Group
                    Caption = "Home"
                    runat="server">
                   
                    <cswm:Item
                               Caption = "News"
                               URL = "News.aspx"
                               runat = "server" />