4、新建一个继承自CollectionBase的类CheckboxAlls
using System.Collections;
using System.ComponentModel;
using System.Web.UI;
namespace YYControls.SmartGridView
{
/// <summary>
/// CheckboxAlls 的摘要说明。
/// 注意要继承自CollectionBase
/// </summary>
[
ToolboxItem( false),
ParseChildren( true)
]
public class CheckboxAlls : CollectionBase
{
/// <summary>
/// 构造函数
/// </summary>
public CheckboxAlls()
: base()
{
}
/// <summary>
/// 实现IList接口
/// 获取或设置指定索引处的元素。
/// </summary>
/// <param name="index">要获得或设置的元素从零开始的索引</param>
/// <returns></returns>
public CheckboxAll this[ int index]
{
get
{
return (CheckboxAll) base.List[index];
}
set
{
base.List[index] = (CheckboxAll)value;
}
}
/// <summary>
/// 实现IList接口
/// 将某项添加到 System.Collections.IList 中。
/// </summary>
/// <param name="item">要添加到 System.Collections.IList 的 System.Object。</param>
public void Add(CheckboxAll item)
{
base.List.Add(item);
}
/// <summary>
/// 实现IList接口
/// 从 System.Collections.IList 中移除特定对象的第一个匹配项。
/// </summary>
/// <param name="index">要从 System.Collections.IList 移除的 System.Object</param>
public void Remove( int index)
{
if (index > -1 && index < base.Count)
{
base.List.RemoveAt(index);
}
}
}
}
using System.ComponentModel;
using System.Web.UI;
namespace YYControls.SmartGridView
{
/// <summary>
/// CheckboxAlls 的摘要说明。
/// 注意要继承自CollectionBase
/// </summary>
[
ToolboxItem( false),
ParseChildren( true)
]
public class CheckboxAlls : CollectionBase
{
/// <summary>
/// 构造函数
/// </summary>
public CheckboxAlls()
: base()
{
}
/// <summary>
/// 实现IList接口
/// 获取或设置指定索引处的元素。
/// </summary>
/// <param name="index">要获得或设置的元素从零开始的索引</param>
/// <returns></returns>
public CheckboxAll this[ int index]
{
get
{
return (CheckboxAll) base.List[index];
}
set
{
base.List[index] = (CheckboxAll)value;
}
}
/// <summary>
/// 实现IList接口
/// 将某项添加到 System.Collections.IList 中。
/// </summary>
/// <param name="item">要添加到 System.Collections.IList 的 System.Object。</param>
public void Add(CheckboxAll item)
{
base.List.Add(item);
}
/// <summary>
/// 实现IList接口
/// 从 System.Collections.IList 中移除特定对象的第一个匹配项。
/// </summary>
/// <param name="index">要从 System.Collections.IList 移除的 System.Object</param>
public void Remove( int index)
{
if (index > -1 && index < base.Count)
{
base.List.RemoveAt(index);
}
}
}
}
5、在继承自GridView的类中加一个复杂对象属性,该复杂对象就是第4步创建的那个CheckboxAlls
private CheckboxAlls _checkboxAlls;
/// <summary>
/// 复选框组集合 一个组由一个 全选复选框 和多个 项复选框组成
/// </summary>
[
PersistenceMode(PersistenceMode.InnerProperty),
DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
Description( "复选框组集合 一个组由一个 全选复选框 和多个 项复选框组成"),
Category( "扩展")
]
public virtual CheckboxAlls CheckboxAlls
{
get
{
if (_checkboxAlls == null)
{
_checkboxAlls = new CheckboxAlls();
}
return _checkboxAlls;
}
}
/// <summary>
/// 复选框组集合 一个组由一个 全选复选框 和多个 项复选框组成
/// </summary>
[
PersistenceMode(PersistenceMode.InnerProperty),
DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
Description( "复选框组集合 一个组由一个 全选复选框 和多个 项复选框组成"),
Category( "扩展")
]
public virtual CheckboxAlls CheckboxAlls
{
get
{
if (_checkboxAlls == null)
{
_checkboxAlls = new CheckboxAlls();
}
return _checkboxAlls;
}
}
6、声明一些内部属性
/// <summary>
/// 隐藏字段的ID,用于存每组的全选复选框ID
/// </summary>
protected string HiddenCheckboxAllID
{
get { return "hdn_checkboxAll"; }
}
/// <summary>
/// 隐藏字段的ID,用于存每组的项复选框ID
/// </summary>
protected string HiddenCheckboxItemID
{
get { return "hdn_checkboxItem"; }
}
/// <summary>
/// 组分隔符,一个 全选复选框 和其对应的n个 项复选框 为一个组
/// </summary>
protected char GroupSeparator
{
get { return ','; }
}
/// <summary>
/// 项分隔符,项复选框 每个项之间的分隔符
/// </summary>
protected char ItemSeparator
{
get { return '|'; }
}
/// 隐藏字段的ID,用于存每组的全选复选框ID
/// </summary>
protected string HiddenCheckboxAllID
{
get { return "hdn_checkboxAll"; }
}
/// <summary>
/// 隐藏字段的ID,用于存每组的项复选框ID
/// </summary>
protected string HiddenCheckboxItemID
{
get { return "hdn_checkboxItem"; }
}
/// <summary>
/// 组分隔符,一个 全选复选框 和其对应的n个 项复选框 为一个组
/// </summary>
protected char GroupSeparator
{
get { return ','; }
}
/// <summary>
/// 项分隔符,项复选框 每个项之间的分隔符
/// </summary>
protected char ItemSeparator
{
get { return '|'; }
}
本文转自webabcd 51CTO博客,原文链接:http://blog.51cto.com/webabcd/345494,如需转载请自行联系原作者