网络编程
位置:首页>> 网络编程>> ASP.NET>> 打造通用ASP.NET数据分页控件(9)

打造通用ASP.NET数据分页控件(9)

作者:东方欲晓 来源:yesky 发布时间:2007-08-18 13:27:00 

标签:ASP.NET,分页

  至此为止,分页控件的显示部分基本设计完毕。最后剩下的结束工作是提供几个事件句柄,使得用户能够在各种分页控件事件出现时进行必要的调整。


public delegate void PageDelegate(object sender,PageChangedEventArgs e);
public enum PagedEventInvoker{Next,Previous,First,Last,Pager}
public class PageChangedEventArgs:EventArgs
{
private int newpage;
private Enum invoker;
public PageChangedEventArgs(int newpage):base()
{
this.newpage = newpage;
}
public PageChangedEventArgs(int newpage,PagedEventInvoker invoker)
{
this.newpage = newpage;
this.invoker = invoker;
}
public int NewPage {get{return newpage;}}
public Enum EventInvoker{get{return invoker;}}
}



  由于分页控件需要返回自定义的事件参数,所以我们定义了一个专用的PageChangedEventArgs类。PageChangedEventArgs类返回PagedEventInvoker类型,PagedEventInvoker类型是可能触发事件的控件的枚举量。为了处理自定义的事件参数,我们定义了一个新的delegate,即PageDelegate。事件按照下面的形式定义:


public event PageDelegate PageChanged;
public event EventHandler DataUpdate;


  当事件没有对应的事件 * 时,ASP.NET会抛出一个异常。分页控件定义了下列RaiseEvent方法。


private void RaiseEvent(EventHandler e,object sender)
{
this.RaiseEvent(e,this,null);
}
private void RaiseEvent(EventHandler e,object sender, PageChangedEventArgs args)
{
if(e!=null) 
{
e(sender,args);
}
}
private void RaiseEvent(PageDelegate e,object sender)
{
this.RaiseEvent(e,this,null);
}
private void RaiseEvent(PageDelegate e,object sender, PageChangedEventArgs args)
{
if(e!=null) 
{
e(sender,args);
}
}



  现在事件句柄可以通过调用各个RaiseEvent方法来触发事件了。

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com