4、新建一个继承自CollectionBase的类CheckboxAlls
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件using System.Collections;
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件using System.ComponentModel;
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件using System.Web.UI;
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件namespace YYControls.SmartGridView
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件{
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件        /// <summary>
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件        /// CheckboxAlls 的摘要说明。
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件        /// 注意要继承自CollectionBase
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件        /// </summary>
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件        [
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件        ToolboxItem(false),
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件        ParseChildren(true)
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件        ]
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件        public class CheckboxAlls : CollectionBase
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件        {
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                /// <summary>
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                /// 构造函数
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                /// </summary>
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                public CheckboxAlls()
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                        : base()
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                {
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                }
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                /// <summary>
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                /// 实现IList接口
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                /// 获取或设置指定索引处的元素。
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                /// </summary>
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                /// <param name="index">要获得或设置的元素从零开始的索引</param>
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                /// <returns></returns>
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                public CheckboxAll this[int index]
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                {
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                        get
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                        {
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                                return (CheckboxAll)base.List[index];
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                        }
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                        set
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                        {
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                                base.List[index] = (CheckboxAll)value;
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                        }
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                }
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                /// <summary>
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                /// 实现IList接口
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                /// 将某项添加到 System.Collections.IList 中。
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                /// </summary>
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                /// <param name="item">要添加到 System.Collections.IList 的 System.Object。</param>
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                public void Add(CheckboxAll item)
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                {
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                        base.List.Add(item);
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                }
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                /// <summary>
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                /// 实现IList接口
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                /// 从 System.Collections.IList 中移除特定对象的第一个匹配项。
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                /// </summary>
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                /// <param name="index">要从 System.Collections.IList 移除的 System.Object</param>
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                public void Remove(int index)
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                {
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                        if (index > -1 && index < base.Count)
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                        {
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                                base.List.RemoveAt(index);
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                        }
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件                }
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件        }
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_控件}
 
 
5、在继承自GridView的类中加一个复杂对象属性,该复杂对象就是第4步创建的那个CheckboxAlls
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67 private CheckboxAlls _checkboxAlls;
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                /// <summary>
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                /// 复选框组集合 一个组由一个 全选复选框 和多个 项复选框组成
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                /// </summary>
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                [
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                PersistenceMode(PersistenceMode.InnerProperty),
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                Description("复选框组集合 一个组由一个 全选复选框 和多个 项复选框组成"),
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                Category("扩展")
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                ]
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                public virtual CheckboxAlls CheckboxAlls
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                {
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                        get
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                        {
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                                if (_checkboxAlls == null)
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                                {
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                                        _checkboxAlls = new CheckboxAlls();
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                                }
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                                return _checkboxAlls;
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                        }
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                }
 

6、声明一些内部属性
/// <summary>
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                /// 隐藏字段的ID,用于存每组的全选复选框ID
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                /// </summary>
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                protected string HiddenCheckboxAllID
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                {
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                        get { return "hdn_checkboxAll"; }
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                }
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                /// <summary>
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                /// 隐藏字段的ID,用于存每组的项复选框ID
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                /// </summary>
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                protected string HiddenCheckboxItemID
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                {
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                        get { return "hdn_checkboxItem"; }
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                }
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                /// <summary>
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                /// 组分隔符,一个 全选复选框 和其对应的n个 项复选框 为一个组
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                /// </summary>
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                protected char GroupSeparator
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                {
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                        get { return ','; }
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                }
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                /// <summary>
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                /// 项分隔符,项复选框 每个项之间的分隔符
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                /// </summary>
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                protected char ItemSeparator
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                {
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                        get { return '|'; }
上接扩展GridView控件(4) - 联动复选框(复选框的全选和取消全选)_GridView_67                }