1

別のユーザーコントロール内にユーザーコントロールがあります。特定のプロセスを実行した後、親のボタンコントロールを見つけて、OnClickイベントを実行します。

ユーザーコントロール1

protected void btnReload_Click(object sender, EventArgs e)
{
    //reloads data
}

usercontrol 2(usercontrol 1に埋め込まれています)

protected void btnSave_Click(object sender, EventArgs e)
{
    Button btnReload = (Button)Parent.FindControl("btnReload");
    //here fire the btnReload onclick even
}

これが私が推奨する最善の方法ではない場合、私はこれの上に髪を引っ張るところまで来ています。これを行う理由は、新しいユーザーを作成するためにすべてが必要な8つのページがあるため、そのために1つのユーザーコントロールを使用したいのですが、新しいユーザーが作成されたページをリロードします。

4

2 に答える 2

4

そうしないでください。
UserControlは、周囲について知る必要のない自己完結型のチャンクである必要があります。

代わりに、UserControlでイベントを作成し、親ページで処理します。クリックハンドラーを別のメソッドに移動し、ボタンクリックイベントと新しいカスタムイベントの両方からそのメソッドを呼び出すことができます。

于 2012-04-17T19:54:30.807 に答える
1

あなたがそれをすることができる2つの方法があります:

1.サーバー側。

あなたがやろうとしていることは、アーキテクチャに関して間違っていることです。子供は親のコントロールを見つけようとしてはならず、親もそうすべきではありません。したがって、子コントロールはカスタムイベントを持つことができ、親はそれに登録でき、子コントロールのボタンクリックイベントでそのイベントを発生させることができます。

開始するための記事は次のとおりです:http://codebetter.com/brendantompkins/2004/10/06/easily-raise-events-from-asp-net-ascx-user-controls/

これについてもここで説明しました:親の子でボタンがクリックされたときをどのように判断しますか-ASP.NET

2.クライアント側:

JQueryを使用すると、子コントロールのボタンクリックイベントをキャッチし、そこから親のボタンクリックを発生させることができます。非表示の変数を使用して、親のボタンのIDを共有できます。

于 2012-04-17T19:57:18.477 に答える