2011-09-23 26 views
3

jQueryのアコーディオンコントロールで3つのチェックボックスを動的に作成しました。また、CheckedChangedイベントをテキストボックスに関連付けます。しかし、イベントはまったく発射されていません。ここで何が起こっているのか分かりません。私を助けてください。ありがとう、あなたのフィードバックに感謝します。私はCheckboxChangedイベントが発火されていないイベントチェックボックスが変更されました動的に追加されたコントロールのイベントが発生しません

protected void Page_Load(object sender, EventArgs e) 
{ 
    dvAccordion.Controls.Clear(); 
    foreach (DataRow row in dataSetIP.Tables[0].Rows) 
    { 
     HtmlGenericControl tt= new HtmlGenericControl("H3"); 
     HtmlAnchor anc= new HtmlAnchor(); 
     HtmlGenericControl dvP= new HtmlGenericControl("DIV"); 
     dvP.InnerHtml = row["LD"].ToString(); 
     CheckBox chkTest = new CheckBox(); 
     if (!Page.IsPostBack) chkTest .ID = "chk" + row["SD"].ToString(); 
     else 
     { 
      string uniqueID = System.Guid.NewGuid().ToString().Substring(0, 5); 
      chkTest .ID = "chk" + uniqueID + row["SD"].ToString(); 
     } 
     chkTest.Text = row["SD"].ToString(); 
     chkTest.AutoPostBack = true; 
     chkTest.CheckedChanged += new EventHandler(chkTest _CheckedChanged); 
     chkTest.InputAttributes.Add("Value", row["ID"].ToString()); 

     anc.Controls.Add(chkTest); 
     tt.Controls.Add(anc); 
     dvAccordion.Controls.Add(tt); 
     dvAccordion.Controls.Add(dvP);   
    } 
} 

しかしを動的制御を生成し、関連付けるために使用

コード。

答えて

1

コントロール、ViewState、およびライフサイクルの一部を追加するときの問題です。ライフサイクル全体に完全に参加するコントロールを動的に追加することは複雑なテーマです。コンテキストがなければ、Truly Understanding Dynamic Controlsシリーズを読むことをお勧めします。

あなたのケースでは、ViewStateの初期化後に次のページの読み込み時にコントロールを再作成していると思いますので、バインドの呼び出しをキューに入れる必要があるときにバインディングについてはわかりませんイベントハンドラ。

+0

あなたの返信Mufasaの束をありがとう、しかし私はそれを正確に取得しませんでした。あなたが私がViewStateを得ることができるように、それらのコントロールを再作成したい時を教えてください。 Page_Initに入れてみましたが、うまくいきませんでした。 – user788312

+0

@ user788312何をしたいかによって、いくつかの解決策があります。より多くの文脈を提供するか、ダイナミックなコントロールを正しく使う方法を見つけ出すのを助けた唯一のものだから、そのシリーズを読むことをお勧めします。それが価値あるものであれば、私は可能な限り使用することを避けようとします。通常、それは価値があるよりも多くの努力です。たとえば、RepeaterまたはListViewを使用します。 –

+0

Mufasa Thannksもう一度。これはコンテキストです、私はDBによって返された行の数に基づいて動的に構築されるJQueryアコーディオンを持っています。また、チェックボックスの選択に基づいてグリッドのデータを設定する必要があるため、すべてのアコーディオン行にチェックボックスが必要です。しかし、これらのチェックボックスはアコーディオンの内部で動的に作成されるので、チェックボックスの変更イベントは、今まで発射していないものが呼び出されることはありません。そのイベントが発生すると、チェック属性の値をチェックしてDBの内容を確認できます。あなたがそれを持っていない場合、私に知らせてください。ありがとうと感謝のフィードバック。 – user788312

0

Page_Load()イベントの前に発生するPage_Init()イベントのコントロールを追加してみてください。

+0

私はそれをやってみました。しかし、どちらもうまくいきませんでした。 – user788312

関連する問題