0

子ユーザーコントロールには、[編集]ボタンがクリックされたときに実行されるOnRowCommandイベントハンドラーを備えたグリッドビューがあります。子コントロールで[編集]ボタンがクリックされたときに、親のASP.NETプレースホルダーコントロールの表示をtrueに設定したいと思います。

このタスクを実行するための最良の方法は何でしょうか?

更新:
インターネットでもう少し調査した後、子コントロールで公開イベントEventhandlerを作成し、OnRowCommandイベントが発生したときにイベントを発生させました。親コントロールのpage_loadイベントで、子ユーザーコントロールイベントを親コントロールのプライベートイベントにマップしました。

子制御のソースコード:

public event EventHandler MyEvent;

protected void MyGridView_OnRowCommand(object sender, GridViewCommandEventsArgs e)
{
    if(MyEvent != null)
        MyEvent(sender, e);
}

親コントロールのソースコード:

protected void Page_Load(object sender, EventArgs e)
{
    MyChildControl.MyEvent += new EventHandler(this.MyLocalEvent);
}

private void MyLocalEvent(object sender, EventArgs e)
{
    MyPlaceHolder.Visible = true;
    MyUpdatePanel.Update();
}
4

2 に答える 2

1

イベントをバブリングする以外に、考慮に値する方法が 2 つあります。

a. 子ユーザー コントロールに新しいイベントを作成します。親コントロールでこのイベントをリッスンします。子コントロールでこのイベントを発生させます。

b. 親コントロールで gridview イベント OnRowCommand をリッスンします。

抽象化の漏れが少ないため、アプローチ a が優れています。B は手早く汚れていますが、これが 1 回限りのユーザー コントロールであれば、悪影響はありません。

イベントの作成は非常に簡単です。多くのプログラムにはイベントのテンプレートが含まれています。つまり、入力するのはイベントの名前だけです (Resharper など)。

于 2009-01-15T21:11:54.090 に答える
1

頭のてっぺんから、OnRowCommand が起動したときに起動する子ユーザー コントロール内に新しいイベントを作成するか、OnBubbleEvent を使用します。正確な名前は思い出せませんが、そのようなものです。

于 2009-01-15T20:40:31.140 に答える