ASP.NET中定制自己的委托和事件参数类(2)
来源:未知 责任编辑:责任编辑 发表时间:2015-09-16 20:03 点击:次
在GridPageChangedEventArgs方法体中定义了一些属性;分别表示当前页(CurrentPageIndex)、页总数(PageCount)和页尺寸(PageSize)。这些都是我们自定义的页信息数据。
代码中的这句:
public delegate void GridPageChangedEventHandler(object source, GridPage ChangedEventArgs e);
定义了一个委托GridPageChangedEventHandler。该委托可以指定这样的一个事件方法:第一个参数为object类型,第二个参数即为上面我们定义的页参数类对象GridPageChanged EventArgs。在注册事件时,该委托可以保证在页面后面代码中自动产生的事件体的两个参数类型与自己的两个参数类型一致。下面是在页面中注册的事件后台代码:
protected void Grid1_PageIndexChanged(object source,GridPageChangedEventArgs e)
{
int intCurrentPageIndex = e.CurrentPageIndex;
int intPageSize = e.PageSize;
//获取数据逻辑
}
可以看到第二个参数类型即我们定义的GridDocPageChangedEventArgs类型,在事件方法体中,可以直接通过e.CurrentPageIndex和e.PageSize获取数据,这种应用就比较多了。
现在页参数对象和委托定义好了,下面说一下在主控件内部是如何应用它们的。声明事件代码如下:
/// <summary>
/// 获得本书更多内容,请看:
/// http://blog.csdn.net/ChengKing/archive/2008/08/18/2792440.aspx
/// </summary>
private new static readonly object EventPageIndexChanged = new object();
[Category("Action"), Description("翻页事件")]
public event GridPageChangedEventHandler PageIndexChanged
{
add
{
base.Events.AddHandler(Grid.EventPageIndexChanged, value);
}
remove
{
base.Events.RemoveHandler(Grid.EventPageIndexChanged, value);
}
}
这里继续采用5.3.1小节讲的高效率事件集合列表对象base.Events,事件的名称为PageIndexChanged,委托类型为之前我们定义的委托类型GridPageChangedEventHandler。
引发事件的核心代码如下:
/// <summary>
/// 获得本书更多内容,请看:
/// http://blog.csdn.net/ChengKing/archive/2008/08/18/2792440.aspx
/// </summary>
protected override bool OnBubbleEvent(object source, EventArgs e)
{
bool handled = false;
if (e is GridCommandEventArgs)
{
if ((((GridCommandEventArgs)(e)).CommandSource) is LinkButton)
{
LinkButton lb=((LinkButton)(((GridCommandEventArgs)(e)). Command Source));
if (lb.CommandName == "Page")
{
if (lb.CommandArgument == "ButtonFirst")
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>