イベントやデリゲートの経験はありません。過去数日間、インターネットを介して SO やその他の情報源で見つけたものから何かをしようとしてきました。
私がやろうとしているのは、カスタム ページネーションのカスタム OnPageChange イベントです。私が(できれば)それをした後、さらに3つのことをするように言われました。
1 - コントロール内の「onclick イベント」
2- すべてのリンクボタンでこの onclick イベントを呼び出すようにする
3- リンクボタンのボタンクリックから OnPageChange イベントを発生させます。
これまでのところ、これらを行いました。
カスタム ページネーション コントロールの内部 (名前は PagingControl)
public class PageChangeEventArgs : EventArgs
{
private int PageNum;
public PageChangeEventArgs(int PageNum)
{
this.PageNum = PageNum;
}
public int Page
{
get
{
return PageNum;
}
}
}
public class ClickEventArgs : EventArgs
{
public ClickEventArgs()
{
}
}
public delegate void PageChangeHandler(object sender, PageChangeEventArgs e);
public delegate void PageChangeClickHandler(object sender, ClickEventArgs e);
//------------------------------------------------------------------------
public partial class PagingControl : System.Web.UI.UserControl
{
//------------------------------------------------------------------------
public event PageChangeHandler PageChange;
protected virtual void OnPageChange(PageChangeEventArgs e)
{
PageChange(this, e);
}
public event PageChangeClickHandler PageChangeClick;
protected virtual void OnPageChangeClick(ClickEventArgs e)
{
PageChangeClick(this, e);
}
//------------------------------------------------------------------------
.
.
.
}
また、ボタンからコマンド引数を送信することで、OnPageChange にそれがどのページであるかを知らせようとしています。例;
btnNext.Text = String.Format("<a href=\"{0}\"><b>{1}</b></a> ",
GetPagingUrl(Convert.ToString(this.CurrentPageId + 1)), "<img src='../../img/next.gif' border='0' />");
btnNext.CommandArgument = Convert.ToString(this.CurrentPageId + 1);
これらはすべて私にとって非常に新しく、なじみのないもので、どうすればボタンとイベントハンドラーの会話を得ることができるのか途方に暮れています。
私は主にこのページを他の多くのページの中で使用して、物事を成し遂げました: http://www.windowsdevcenter.com/pub/a/dotnet/2002/04/15/events.html