2011-11-03 15 views
4

私の問題は、ダイナミックに作成されたCheckBoxにイベントハンドラを追加したいということです。私はすでにこれを行うための他の方法を検討しており、私のCheckBoxesを含む動的なテーブルを作成することが私にとって最良の選択肢であると判断しました。 ViewStateを手動で管理する必要があるため、これらのチェックボックスをコントロールツリーに追加していません。いずれにせよ、私のコードは、CheckBoxのCheckChangedイベントが起動しないことを除いて、あらゆる点で機能します。動的に作成されたチェックボックス(aspx、c#)にイベントハンドラを追加する

CheckBox chbxLv1 = new CheckBox(); 
chbxLv1.ID = "DymanicallyCreatedIDForIdentification"; 
chbxLv1.AutoPostBack = true; 
chbxLv1.CheckedChanged += new EventHandler(this.checkChanged); 

/* Way lower in my code */ 

protected void checkChanged(object sender, EventArgs e) 
{ 
//Some code goes here which never seems to execute... grrr 
} 

私はこれが最初で、ViewStateのに問題があり得ることを考えて、やった:私は、しかし、私がしよう任意のページのイベントは私に同じ結果を与えるようで、私のpageLoadイベントで私のチェックボックスに、このイベントハンドラを追加していそれに関するかなりの研究。私は今、私がイベントハンドラを追加して何かばかげていると思っています。なぜこのイベントが発生しないのか分かりませんが、コントロールにイベントを追加するのはちょっと新しいです。ここにデリゲートが必要ですか? ASP.NETページのライフサイクルの間、適切に処理される動的にロードされたコントロールのために、彼らは(実際に、または前LoadViewStateまで)のOnInit中にページに追加する必要が

--Roman

+1

ポストバックによってトリガされるようにするには、イベントハンドラをページロード(イベントハンドラ)の前にアタッチする必要があります。 – rossipedia

+0

また、チェックボックスをコントロールツリーに追加しない場合は、ページにどのように表示されますか? – rossipedia

答えて

2

そうでない場合はそれらの状態情報は維持されず、事実、ページのコントロールグラフに物事がどのように/どこに追加されるかに応じてビューステートが破損する可能性があります。

+1

それは答えでしょう。ありがとう –

関連する問題