- PR -

カスタムコントロールの入れ子でイベントが取得できない

1
投稿者投稿内容
千秋
会議室デビュー日: 2008/06/01
投稿数: 1
投稿日時: 2008-06-01 21:49
皆様お疲れ様です。

現在 VS2005のASP.NETを使用して開発を行っています。

カスタムコントロール(仮にA)を作成し、その中でボタンコントロールを動的追加しています。
このボタンに以下のような感じでイベントを追加してます。

    Private mBtn As Button
    Protected Overrides Sub CreateChildControls()
      mBtn = New Button
      AddHandler mBtn.Click, AddressOf BtnClick
      Controls.Add(mBtn)
    End Sub

    Private Sub BtnClick(ByVal sender As Object, ByVal e As EventArgs)
      Debug.Print("イベント走った")
    End Sub

で、フォーム上にこのAを置く分にはイベントが正しく走るのですが、
別のカスタムコントロール(仮にB)にこのAを置いてしまうと、(Bの中にAを入れ子にして使用すると)
Aで動的追加したボタンのイベントが走らなくなります。
Debug.Printの部分にブレークポイントを設定しても止まらないし。
しかしポストバックは発生するんです。

なにか指定が必要なのでしょうか?
調査の仕方が悪いのか、どうも解を得られなくて困っています。
よろしくお願いします。

[ メッセージ編集済み 編集者: 千秋 編集日時 2008-06-01 21:55 ]

[ メッセージ編集済み 編集者: 千秋 編集日時 2008-06-01 21:56 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2008-06-12 21:37
ポストバックが発生するのは、Button が type=submit な input 要素になるからです。
HTML のソースを見て、カスタムコントロールのボタンの ID が何になっているか、確認してみてください。それと、ポストされたデータの、ポストバックを引き起こしたコントロールの ID が一致ししているかどうかを確認してみてください。
あとは、ポストバックの時に、引用された、イベントをハンドラを登録する処理が走っているか、確認してみてください。
それから、あと、、、なにがあるかな???
1

スキルアップ/キャリアアップ(JOB@IT)