2

ボタンを使用したユーザーコントロール-ucが別のページに動的に追加されると、ボタンハンドラーが失われます。

つまり、1つのボタンを持つ1つのユーザーコントロールがあります-ボタンには、コードビハインドにイベントハンドラーがあります。プログラムでUserControlをページに追加すると、ボタンハンドラーが起動しません。これを修正する簡単な方法のアイデア。

通常、iveがコントロールをページに動的に追加した場合、ポストバックごとにイベントハンドラーを再配線する必要がありましたが、そのボタンがUserControlに含まれていて、ucが動的に追加されたので、それを失うことはありませんでした。そうだと思われます-これを行うためのより良い方法はありますか?私のユーザーコントロールには最終的に多くのボタンがあり、ユーザーコントロールを動的に追加しているページから毎回それらを再配線する必要はありません。

4

4 に答える 4

2

Page.LoadControl を使用して、ページの OnInit イベント ハンドラーに ascx コントロールを追加します (ただし、Load イベント ハンドラーでこれを行って動作しますが、ドキュメントでは OnInit が指定されています)。

ユーザー コントロール (およびページ) は、ロードとポストバックごとにイベントを関連付ける必要があります。たとえば、this.buttonID.Click += new System.EventHandler(this.buttonID_Click);

そうでない場合は、aspx/ascx マークアップを確認してください。余分な < などの誤った文字がページを壊す可能性がありますが、ブラウザでは問題なくレンダリングされます。

于 2008-10-20T09:14:27.737 に答える
0

それをajaxUpdatePanelの内部に追加していますか?更新パネルはポストバックをキャッチします。

于 2008-10-21T13:31:54.953 に答える
0

ページにコントロールを動的に追加すると、コントロールの ID が同期しなくなるため、ボタン イベント ハンドラが混乱することがあります。しかし、ここでも、コントロールを動的にロードする方法を確認する必要があります。

于 2008-10-20T08:18:08.490 に答える
0

コントロールを動的に追加する場合、Page_Init イベントのホスト ページで毎回作成する必要があります。
その場合は、クリック イベント ハンドラーが UserControl の OnInit に接続されていることを確認してください。毎回動的コントロールを作成するわけではないと思います。

于 2008-10-20T08:46:32.863 に答える