基于asp.net的webmenu的数据操作(1)
摘要:越来越多的网页中使用到了菜单,一般说来,菜单制作的方法比较多,编程的语言基本上是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" />
 
          </cswm:Group>
 
</cswm:WebMenu>
 
        5:添加嵌套菜单组和菜单项。<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" />
 
                    <cswm:Item
                               Caption = "About"
                               URL = "About.aspx"
                               runat = "server" />
                               
                    <cswm:Item
                               Caption = "Products"
                               runat = "server">
 
                               <cswm:Group runat="server">
 
                                         <cswm:Item
                                                   Caption = "Super Widget"
                                                   URL = "SuperWidget.aspx"
                                                   runat = "server" />
 
                                         <cswm:Item
                                                   Caption = "Super Widget Pro"
                                                   URL = "SuperWidgetPro.aspx"
                                                   runat = "server" />
                                                   
                               </cswm:Group>
 
                    </cswm:Item>
                                                                       
          </cswm:Group>
 
</cswm:WebMenu>
 
请问在上边的代码中"使用之前要注册。注册后就可以把注册码嵌入ASP.net的后台,以便分发部署的时候不会出错。"这句话如何理解,也就是注册如何注,又如何把具体的注册码写到后台,请写一下操作方法好吗,我现在有这个控件了,不过我没有注册码,以致使用时总是有一个未注册提示信息,请兄弟姐妹帮忙了,谢谢了。

解决方案 »

  1.   

    用ASP。NET MENU1.2吧:1、安装:由于在它的官方网站上写的很清楚,用以前的1.1注册码就可以注册,所以我找了个1.1的注册机,如里只能看这篇文章,可以参考如下注册码:2110-0404-4033-6597
     下载地址:http://www.aspnetmenu.com/download/ASPnetMenu_setup.msi
    2、安装后,一般放在C:\Program Files\ASPnetMenu下,要想看到例子,还要进来后再次安装:ASPnetMenu_examples.msi,默认虚拟目录:ASPnetMenu,默认端口是:80
    3、在开始菜单中找到ASP.NET MENU的项目,选中Examples - Start Page.htm第一个例子:Basic Horizontal
    运行地址:http://localhost/ASPnetMenu/design/basicHorizontal/WebForm1.aspx
    物理目录地址:wwwroot/ASPnetMenu/Design/basicHorizontal/ (1)将C:\Program Files\ASPnetMenu\ASPnetMenu.dll添加到工具箱
    (2)拖放此控件到空白页面,将例子演示里的IMAGES目录和XML文件拷当前目录下。并在解决方案中添加menudata.xml进来。设定AspNetMenu 控件的MenuData属性为menudata.xml
    (3)现在就可以直接运行项目看到效果了。但这时看不到中文的菜单,因为如果我们把XML里的相关项目改为中文,会出现:给定编码中有无效的字符 这样的错误。解决办法是:
    用记事本打它menudata.xml文件,直接选另存为:文件名不变,把编码改为:UTF-8,提示是不是覆盖时选是。再次运行项目。以后要想每改一下XML文件内容,直接用VS是不行的,要用记事本打开,然后再次另存为UTF-8才行!(FIT!!!)
       附另一解决办法:设置<?xml version="1.0" encoding="gb2312" ?>(4)xml文件里Label属性可以有:
            RightIcon  向右的级联菜单图标 ,比如:RightIcon="arrow_white.gif" 
            RightIconWidth 向右级联菜单图标的宽度 比如:RightIconWidth="15"
            ID="i_List"
    (5)要想知道用户是按下哪个选项,可以通过ID的设置,比如:
         XML文件里有:<MenuItem Label="文件" ID="i_File"/>
        那么在:控件的事件,也就是属性窗口中那个黄色的小闪电那个中,找到:MenuItemSelected,设置相关事件:
        private void ASPnetMenu1_MenuItemSelected(object sender, CYBERAKT.WebControls.Navigation.MenuItemSelectedEventArgs e)
    {
    Response.Write(e.ItemID.ToString());
    }
    然后在括号中处理相关事件。
    第二个例子:Basic Vertical
      (1)这个和上面那个有点点不一样,因为按上面的办法做完后,发现直接编译就只有一些叠在一起的文字,解决办法:
        在读我文档上说的不明白,是这样的:
          MenuStyle 设置成 ClassicVertical; 
         ExpandDelay 设置成 300 milliseconds; 
         ShadowEnabled 设置 True; 
         Menu structure is defined in the menuData.xml file; 
         //CSS style definitions are provided in the menuStyle.css file; 这句是关键,这不是在属性窗体中找到,是在html文件里手动加入:
         <link href="baseStyle.css" type="text/css" rel="stylesheet">
             <link href="menuStyle.css" type="text/css" rel="stylesheet" >  其中第一个CSS是在C:\Inetpub\wwwroot\ASPnetMenu下找到,第二个是其例子中找到的。这样就可以正常运行了。
      

  2.   

    谢谢: goody9807() k兄弟了,
      

  3.   

    用这个吧,开源软件多好啊
    http://www.solpart.com/techcorner/SolpartMenuHistory.aspx
      

  4.   

    WebMenu.UserData = "John Doe:Acme Corp:1234567890";
    这句就是在后台写注册码.