0

実験として c# asp.net で複合コントロールを作成しており、複合コントロールのすべてのインスタンスを 1 つの外部コントロールとやり取りさせたいと考えています。これは可能ですか?

私が試したこと:

オプション 1: 外部コントロールがページに存在するかどうかをコントロール内から確認し、存在しない場合は追加します。

オプション 2: デザイン時にターゲット コントロールの ID を複合コントロールに渡してから、this.Page.FindControl() を使用します。

明らかに、それがそれほど単純になるだろうというのは希望的観測でした:)

CreateChildControls メソッド内からこれを実行しようとすると、this.Page.FindControl(target control) は常に null を返します。このメソッド内からページにコントロールを追加しようとすると、例外がスローされます。

「DataBind、Init、Load、PreRender、または Unload フェーズ中にコントロール コレクションを変更することはできません。」

これを達成できる別の方法/イベントはありますか?

4

2 に答える 2

0

INamingContainer インターフェイスを実装することにより、同じ Web フォームに複数のインスタンスを作成できます。これは基本的に、同じ名前空間での ID の衝突を防ぐのに役立ちます。

別のコントロールにアクセスする場合は、プロパティを設定して、公開したいデータを公開します。

複合コントロールの構築

于 2012-02-26T15:51:28.300 に答える
0

複合コントロールで、それらからの出力のパブリック プロパティを公開してから、パネルのコンテンツをレンダリングするときに、ページを再帰的に検索し、複合コントロールのすべてのインスタンスを見つけて、テキストを取得し、それをパネルに追加してみませんか?

于 2012-02-26T16:16:34.037 に答える