上接扩展GridView控件(9) - 给数据行增加右键菜单

本文介绍了一个ContextMenu类的设计过程,包括创建ContextMenu实体类及其属性定义、ContextMenus集合类的实现及继承关系,并展示了如何在GridView派生类中使用这些自定义控件。
2、新建一个ContextMenu实体类,有六个属性
InBlock.gif using System; 
InBlock.gif using System.Collections.Generic; 
InBlock.gif using System.Text; 
InBlock.gif 
InBlock.gif using System.ComponentModel; 
InBlock.gif using System.Web.UI; 
InBlock.gif 
InBlock.gif namespace YYControls.SmartGridView 
InBlock.gif
InBlock.gif         /// <summary> 
InBlock.gif         /// ContextMenu 的摘要说明。 
InBlock.gif         /// </summary> 
InBlock.gif        [ToolboxItem( false)] 
InBlock.gif         public  class ContextMenu 
InBlock.gif        { 
InBlock.gif                 private  string _icon; 
InBlock.gif                 /// <summary> 
InBlock.gif                 /// 文字左边的图标的链接 
InBlock.gif                 /// </summary> 
InBlock.gif                 public  string Icon 
InBlock.gif                { 
InBlock.gif                        get {  return _icon; } 
InBlock.gif                        set { _icon = value; } 
InBlock.gif                } 
InBlock.gif 
InBlock.gif                 private  string _text; 
InBlock.gif                 /// <summary> 
InBlock.gif                 /// 菜单的文字 
InBlock.gif                 /// </summary> 
InBlock.gif                 public  string Text 
InBlock.gif                { 
InBlock.gif                        get {  return _text; } 
InBlock.gif                        set { _text = value; } 
InBlock.gif                } 
InBlock.gif                
InBlock.gif                 private  string _commandButtonId; 
InBlock.gif                 /// <summary> 
InBlock.gif                 /// 所调用的命令按钮的ID 
InBlock.gif                 /// </summary> 
InBlock.gif                 public  string CommandButtonId 
InBlock.gif                { 
InBlock.gif                        get {  return _commandButtonId; } 
InBlock.gif                        set { _commandButtonId = value; } 
InBlock.gif                } 
InBlock.gif 
InBlock.gif                 private  string _navigateUrl; 
InBlock.gif                 /// <summary> 
InBlock.gif                 /// 链接的url 
InBlock.gif                 /// </summary> 
InBlock.gif                 public  string NavigateUrl 
InBlock.gif                { 
InBlock.gif                        get {  return _navigateUrl; } 
InBlock.gif                        set { _navigateUrl = value; } 
InBlock.gif                } 
InBlock.gif 
InBlock.gif                 private ItemTypeCollection _itemType; 
InBlock.gif                 /// <summary> 
InBlock.gif                 /// 右键菜单的项的类别 
InBlock.gif                 /// </summary> 
InBlock.gif                 public ItemTypeCollection ItemType 
InBlock.gif                { 
InBlock.gif                        get {  return _itemType; } 
InBlock.gif                        set { _itemType = value; } 
InBlock.gif                } 
InBlock.gif 
InBlock.gif                 private TargetCollection _target; 
InBlock.gif                 /// <summary> 
InBlock.gif                 /// 链接的target 
InBlock.gif                 /// </summary> 
InBlock.gif                 public TargetCollection Target 
InBlock.gif                { 
InBlock.gif                        get {  return _target; } 
InBlock.gif                        set { _target = value; } 
InBlock.gif                } 
InBlock.gif 
InBlock.gif 
InBlock.gif                 /// <summary> 
InBlock.gif                 /// 右键菜单的项的类别 
InBlock.gif                 /// </summary> 
InBlock.gif                 public  enum ItemTypeCollection 
InBlock.gif                { 
InBlock.gif                         /// <summary> 
InBlock.gif                         /// 链接 
InBlock.gif                         /// </summary> 
InBlock.gif                        Link, 
InBlock.gif                         /// <summary> 
InBlock.gif                         /// 按钮 
InBlock.gif                         /// </summary> 
InBlock.gif                        Command, 
InBlock.gif                         /// <summary> 
InBlock.gif                         /// 分隔线 
InBlock.gif                         /// </summary> 
InBlock.gif                        Separator 
InBlock.gif                } 
InBlock.gif 
InBlock.gif                 /// <summary> 
InBlock.gif                 /// 链接的target 
InBlock.gif                 /// </summary> 
InBlock.gif                 public  enum TargetCollection 
InBlock.gif                { 
InBlock.gif                         /// <summary> 
InBlock.gif                         /// 新开窗口 
InBlock.gif                         /// </summary> 
InBlock.gif                        Blank, 
InBlock.gif                         /// <summary> 
InBlock.gif                         /// 当前窗口 
InBlock.gif                         /// </summary> 
InBlock.gif                        Self, 
InBlock.gif                         /// <summary> 
InBlock.gif                         /// 跳出框架 
InBlock.gif                         /// </summary> 
InBlock.gif                        Top 
InBlock.gif                } 
InBlock.gif        } 
InBlock.gif}
 
3、新建一个继承自CollectionBase的类ContextMenus
InBlock.gif using System.Collections; 
InBlock.gif using System.ComponentModel; 
InBlock.gif using System.Web.UI; 
InBlock.gif 
InBlock.gif namespace YYControls.SmartGridView 
InBlock.gif
InBlock.gif         /// <summary> 
InBlock.gif         /// ContextMenus 的摘要说明。 
InBlock.gif         /// 注意要继承自CollectionBase 
InBlock.gif         /// </summary> 
InBlock.gif        [ 
InBlock.gif        ToolboxItem( false), 
InBlock.gif        ParseChildren( true
InBlock.gif        ] 
InBlock.gif         public  class ContextMenus : CollectionBase 
InBlock.gif        { 
InBlock.gif                 /// <summary> 
InBlock.gif                 /// 构造函数 
InBlock.gif                 /// </summary> 
InBlock.gif                 public ContextMenus() 
InBlock.gif                        :  base() 
InBlock.gif                { 
InBlock.gif                } 
InBlock.gif 
InBlock.gif                 /// <summary> 
InBlock.gif                 /// 实现IList接口 
InBlock.gif                 /// 获取或设置指定索引处的元素。 
InBlock.gif                 /// </summary> 
InBlock.gif                 /// <param name="index">要获得或设置的元素从零开始的索引</param> 
InBlock.gif                 /// <returns></returns> 
InBlock.gif                 public ContextMenu  this[ int index] 
InBlock.gif                { 
InBlock.gif                        get 
InBlock.gif                        { 
InBlock.gif                                 return (ContextMenu) base.List[index]; 
InBlock.gif                        } 
InBlock.gif                        set 
InBlock.gif                        { 
InBlock.gif                                 base.List[index] = (ContextMenu)value; 
InBlock.gif                        } 
InBlock.gif                } 
InBlock.gif 
InBlock.gif                 /// <summary> 
InBlock.gif                 /// 实现IList接口 
InBlock.gif                 /// 将某项添加到 System.Collections.IList 中。 
InBlock.gif                 /// </summary> 
InBlock.gif                 /// <param name="item">要添加到 System.Collections.IList 的 System.Object。</param> 
InBlock.gif                 public  void Add(ContextMenu item) 
InBlock.gif                { 
InBlock.gif                         base.List.Add(item); 
InBlock.gif                } 
InBlock.gif 
InBlock.gif                 /// <summary> 
InBlock.gif                 /// 实现IList接口 
InBlock.gif                 /// 从 System.Collections.IList 中移除特定对象的第一个匹配项。 
InBlock.gif                 /// </summary> 
InBlock.gif                 /// <param name="index">要从 System.Collections.IList 移除的 System.Object</param> 
InBlock.gif                 public  void Remove( int index) 
InBlock.gif                { 
InBlock.gif                         if (index > -1 && index <  base.Count) 
InBlock.gif                        { 
InBlock.gif                                 base.List.RemoveAt(index); 
InBlock.gif                        } 
InBlock.gif                } 
InBlock.gif 
InBlock.gif                 /// <summary> 
InBlock.gif                 /// ToString() 
InBlock.gif                 /// </summary> 
InBlock.gif                 /// <returns></returns> 
InBlock.gif                 public  override  string ToString() 
InBlock.gif                { 
InBlock.gif                         return  "ContextMenus"
InBlock.gif                } 
InBlock.gif        } 
InBlock.gif}
 
4、在继承自GridView的类中加一个复杂对象属性,该复杂对象就是第3步创建的那个ContextMenus
InBlock.gif private ContextMenus _contextMenus; 
InBlock.gif                 /// <summary> 
InBlock.gif                 /// 行的右键菜单集合 
InBlock.gif                 /// </summary> 
InBlock.gif                [ 
InBlock.gif                PersistenceMode(PersistenceMode.InnerProperty), 
InBlock.gif                DesignerSerializationVisibility(DesignerSerializationVisibility.Content), 
InBlock.gif                Description( "行的右键菜单"), 
InBlock.gif                Category( "扩展"
InBlock.gif                ] 
InBlock.gif                 public  virtual ContextMenus ContextMenus 
InBlock.gif                { 
InBlock.gif                        get 
InBlock.gif                        { 
InBlock.gif                                 if (_contextMenus ==  null
InBlock.gif                                { 
InBlock.gif                                        _contextMenus =  new ContextMenus(); 
InBlock.gif                                } 
InBlock.gif                                 return _contextMenus; 
InBlock.gif                        } 
InBlock.gif                }
 
 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值