zoukankan      html  css  js  c++  java
  • 自定义WebPart菜单

    ***********************************************************************
    *                              版权声明
    *      此文章为ocean所有,版权归ocean所有,任何网
    * 站和 媒体转载必须包含此段声明,否则将视为侵权,作
    * 者将保留一切权力。此声明为此文章中不可或缺的一部分。
    * 作者网名:ocean
    * 作者email:ocean@forever.net.cn
    * 作者网站:http://www.oceanstudio.net
    *                http://sps.oceanstudio.net
    * 作者blog:博客园,http://www.cnblogs.com/ocean
    *                     Ocean's blog,http://www.oceanstudio.net/sps/blog
    * 此文章发表时间:2005年3月17日
    ************************************************************************

        如何能够在自定义WebPart中的菜单呢?达到下图的效果:

        我还专门提供了一个示例,代码可以点击此处下载。 这个示例本身不是我写的,我只是对其进行了一下包装。

        本来还作了一个演示示例, 但可惜自定义菜单后,匿名用户是无法访问的,所以只能是验证用户才可以。

        同时你可以从 http://www.oceanstudio.net/sps/Lists/webpart/AllItems.aspx 查看其它的WebPart。

        如何来做呢?在WebPart中我们需要重载CreateWebPartMenu()函数,这个函数是用来生成WebPart的下拉菜单的,其中在WebPart中有一个WebPartMenu对象,这个对象就是WebPart的菜单对象。通过this.WebPartMenu.MenuItems就可以得到所有的菜单项目,当然菜单是可以好多级的。生成菜单通过new MenuItem(),添加一个菜单只要通过MenuItems.Add方法即可。我们还可以为菜单添加客户端或者服务端事件。还可以标记菜单,比如那个删除菜单前面打了一个勾,这是通过MenuItem.Checked = true来实现的。废话不多说了,代码如下:

       

    public override void CreateWebPartMenu()
            
    {
                
    //Add a new Menu Item with a client-side handler
                MenuItem myMenuItem = new MenuItem("Client Side Handler""javascript:alert('test');""MyMenuItem");
                
    this.WebPartMenu.MenuItems.Add(myMenuItem);
        
                
    //Add a handler with a server-side handler
                MenuItem myServerMenuItem = new MenuItem("Server Side Handler","myMenuServerID",new EventHandler(myServerMenuItem_OnClick));
                
    this.WebPartMenu.MenuItems.Add(myServerMenuItem);

                
    //Create a menu with children
                MenuItem myParentMenuItem = new MenuItem("Parent Menu Item","javascript:alert('Parent');","myMenuParentID");
                
    this.WebPartMenu.MenuItems.Add(myParentMenuItem);

                
    //Add submenus to Server-side menu item
                MenuItem myChildMenuItem = new MenuItem("Child menu","javascript:alert('You clicked on the child');","childmenuID");
                myParentMenuItem.MenuItems.Add(myChildMenuItem);

                
    //Check mark the Delete menu item
                MenuItem deleteMenu = this.WebPartMenu.MenuItems.ItemFromID("MSOMenu_Delete");
                deleteMenu.Checked 
    = true;

                
    //Disable the minimize event by adding a return in Javascript
                MenuItem minimizeMenu = this.WebPartMenu.MenuItems.ItemFromID("MSOMenu_Minimize");
                minimizeMenu.ClientEvent 
    = "javascript:alert('Canceling');return false;";
            
                
    //Disable all menu items
                
    //this.WebPartMenu = null;
                
                MenuItem item1 
    = new MenuItem("Menu Item 1","javascript:alert('Menu Item 1');");
                MenuItem item2 
    = new MenuItem("Menu Item 2","javascript:alert('Menu Item 2');");

                
    //Show using AddRange
                this.WebPartMenu.MenuItems.AddRange(new MenuItem[] { item1, item2});

            }

      
     

        欢迎访问海洋工作室( http://sps.oceanstudio.net

  • 相关阅读:
    功能测试点总结
    SQL 注入
    软件特征功能测试过程分析 (引用)
    高效率测试之巧用策略模式 (引用)
    Oracle数据库安装过程中遇到的若干问题
    涉众利益分析
    问题账户需求分析
    2018春阅读计划
    《我们应当怎样做需求分析》阅读笔记
    个人总结
  • 原文地址:https://www.cnblogs.com/ocean/p/120093.html
Copyright © 2011-2022 走看看