龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > asp.net编程 >

ASP.NET中实现定制自己的委托和事件参数类_C#教程(2)

时间:2014-08-30 15:22来源:网络整理 作者:网络 点击:
分享到:
以上OnBubbleEvent方法主要应用于复合控件中,采用冒泡形式处理子控件事件,后面介绍复合控件冒泡处理事件机制时再详细讲解此方法。另外,在控件的翻

以上OnBubbleEvent方法主要应用于复合控件中,采用冒泡形式处理子控件事件,后面介绍复合控件冒泡处理事件机制时再详细讲解此方法。另外,在控件的翻页栏中预先放置了四个翻页功能的按钮,分别表示“首页”、“上一页”、“下一页”、“末页”,并设置它们的属性CommandName都为“Page”,CommandArgument分别为“ButtonFirst”,“ButtonPrev”,“ButtonNext”,“ButtonLast”。
这样就可以根据按钮的命令和参数确定执行什么样的逻辑。这里仅拿按钮“下一页”(Command="Page"&&CommandArgument="ButtonNext")为例解释一下代码逻辑:

/// <summary>
///
/// </summary>
if (lb.CommandArgument == "ButtonNext")
{
    GridPageChangedEventArgs ee = new GridPageChangedEventArgs();
    if (this.CurrentPageIndex < this.PageCount - 1)
    {
      this.CurrentPageIndex += 1;
      ee.CurrentPageIndex = this.CurrentPageIndex;
      ee.PageCount = this.PageCount;
      ee.PageSize = this.PageSize;
      this.OnPageIndexChanged(ee);
    }
    handled = true;
}

代码中首先定义一个页参数类对象,然后通过条件语句判断当前是否是最后一页,如果不是最后一页,则从主控件上读取当前页信息(当前页、页数、页记录数),并赋值给GridPageChangedEventArgs对象,然后以页参数对象作为参数调用this.OnPageIndexChanged方法引发事件。另外,注意LinkButton的CommandName和CommandArgument属性的组合用法。
最后,看一下OnPageIndexChanged方法代码:

/// <summary>
/// </summary>
protected new void OnPageIndexChanged(GridPageChangedEventArgs e)
{
  GridPageChangedEventHandler handler1 = (GridPageChangedEventHandler)base. Events[Grid.EventPageIndexChanged];
  if (handler1 != null)
  {
    handler1(this, e);
  }
}

此方法的功能是从base.Events对象中取出以Grid.EventPageIndexChanged为Key的事件引用句柄,假如句柄不为null(开发人员注册了翻页事件),则引发事件方法体。
最后,说明非常重要的一点:如果自定义了事件参数类,并要求在开发人员注册的事件体中自动显示改变参数对象的类型,如:

protected void Grid1_PageIndexChanged(object source, GridPageChangedEventArgs e)
{
  //… … 
}
精彩图集

赞助商链接