1

私はASP.NETアプリケーション用の複合コントロールを開発していますが、たまたま最初にITemplateを使用して子コントロールを作成するためのコントロールを開発しました。ルートコントロールで処理される一連のボタンが子コントロール内にあります。ボタンのCommandName/CommandArgumentプロパティでOnBubbleEventを使用して、すべてを接続しています。そして、すべてがうまく機能しました...テンプレートをコントロールに変更するまで。

テンプレートをコントロールに変換し、InstantiateIn(this)ではなくルートコントロールでControls.Add(new ChildControl())を呼び出すと、イベントバブリングが機能しなくなりました。

なぜですか?

(すべて、そして私はすべてを意味します、それ以外は同じです。)

4

1 に答える 1

0

複合コントロールは、OnBubbleEvent呼び出しを受信するために、INamingContainerインターフェースを実装する必要があります。CompositeControlクラスはすでにこのインターフェイスを実装しています...あなたの場合、ITemplateのせいではなく、継承をCompositeControlからControlに変更したために機能しなくなりました。

これを参照してください:http://msdn.microsoft.com/en-us/library/system.web.ui.control.onbubbleevent.aspx

彼らはそこでそれを言います。

于 2011-04-29T18:23:22.083 に答える