2009-04-30 10 views
1

私は、3つのボタンと7つのテキストボックスを含むusercontrolを持っています。私はLoadControlを使用してwebformでそのusercontrolをdynamiclly呼び出しています。WebControlのUserControlイベント

しかし、ここで私の問題は、私のページにクリックされた(ユーザーコントロールの)どのボタンを知っている

1.Howのですか?

2.これらのイベントを開催するには?

おかげ Kavitha

+0

質問2について説明すると、もしあれば、どの言語(C#またはVB)のコード例が必要ですか? – Peter

答えて

2

ユーザーコントロールでイベントを作成し、ボタンがクリックされたときに、それを発射。したがって、メインページからこのイベントを管理することができます。

詳細情報についてはあなたが独自の分離コードファイルにユーザーコントロール上のコントロールのイベントを処理し、順番に、あなたのページの分離コードファイルで扱う得ることができ、あなたのユーザーコントロールのイベントを発生させることができEasily Raise Events From ASP.NET ASCX User Controls

0

をご覧ください。

0

最も良いことは、ユーザーコントロールがコントロールをカプセル化して意味のあるイベントを発生させることです。たとえば、「過去12ヶ月」、「Year to date」、「Custom dates」、および開始日と終了日のテキストボックスを選択するRadioButtonListを持つ日付ピッカーユーザーコントロールを作成しました。私のユーザコントロールは、単一のDateChangedイベントを公開します。これは、新しいラジオボタンが選択された場合、または「カスタム」選択が行われて入力日が変更された場合に発生します。

このように、コントロールのユーザーは、コントロールの複雑な実装について知る必要はありません。 DateChangedイベントを登録するだけです。

+0

イベントを呼び出すのではなく、単にSelectedDateをプロパティとして公開する方が簡単だと思います。ずっと少ないコード –

+0

日付選択が変更されたときにデータを再クエリする必要があるという事実を除いて、それは本当です。 –

1

ユーザーコントロール(WebUserControl1.ascx)では、あなたはそうのような役割を果たしクリックハンドラでButton1を持っていることがあります。

Event Button1Click(ByVal button As Button) 

Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click 
    RaiseEvent Button1Click(sender) 
End Sub 

そして、あなたはそれから動的にそのように親コントロールにこれにEventHandlerのを添付することができます:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    Dim buttonControl As WebUserControl1 = LoadControl("WebUserControl1.ascx") 
    AddHandler buttonControl.Button1Click, AddressOf ControlEventHandler 
End Sub 

Private Sub ControlEventHandler(ByVal ctl As Control) 
    'We now have access to this control's properties 
End Sub 
関連する問題