2

asp.NET パネルにいくつかのチェックボックスを動的に追加するユーザー コントロールが必要です。

単純に、コントロールの OnPreInit メソッドで簡単にできると信じていました。しかし、問題は、コントロールで OnPreInit メソッドを使用およびオーバーライドできないことを学んだことです。ページにのみ使用されます。

コントロールのメソッドを呼び出してページからこれを解決したくありません。

コントロールで PreInit を使用できない場合、チェックボックスを動的に追加する適切な場所はどこですか?

私は何かが恋しいですか?何かアドバイスはありますか?

ありがとう。

4

4 に答える 4

2

多くのことは、それらで何をしたいのかに大きく依存すると思います-動的に追加されたコントロールは、ある種の独自のライフサイクルを取得することに注意する必要があります(グーグルは大量の情報を取得する必要がありますが、基本的にはどのフェーズでも「追いつく」でしょう)彼らは逃した)。いくつかの落とし穴を調べたいと思うかもしれないので、これについてのみ言及します-私が最初にそれを経験したとき、私はそれについて頭を悩ませるのに数日を費やしました.

あなたの質問に答えるには、コントロールの OnInit フェーズ中にチェックボックスを追加するのが最適な場所であることをお勧めします。参考までに、ページで宣言された通常のカスタム コントロールを使用して、標準のページの読み込み中にイベントが発生する標準的な順序の下に示しました。

Page: Constructor

Page: OnPreInit

---- Declared Controls Constructed ----

Control: OnInit

Page: OnInit

Page: OnInitComplete

Page: LoadViewState

Control: LoadViewState

Page: OnPreLoad

Page: OnLoad

Control: OnLoad

---- Any Control Events (e.g. btnClick) ----

Page: OnLoadComplete

Page: OnPreRender

Control: OnPreRender

Page: OnPreRenderComplete

Page: SaveViewState

Control: SaveViewState

Page: OnSaveStateComplete

Page: Render

Page: RenderChildren  -> Control: Render

Control: OnUnload

Page: OnUnload
于 2009-12-23T14:40:32.203 に答える
0

一般的な経験則は、できるだけ早くカスタム コントロールを作成することです。コントロールのすべてのイベントは、PreRender まで適切に発生します。PreRender でカスタム コントロールを追加すると、viewstate が読み込まれず、イベントが呼び出されません。

于 2009-12-23T15:49:07.280 に答える
0

Page_Load イベントでも実行できます。その中で何が問題なのですか?

于 2009-12-23T09:21:42.843 に答える
0

チェックボックスの値を使用しようとしている場合は、使用してみてください

 Page.Form.FindControl("ID")
于 2009-12-23T10:11:30.633 に答える