2011-10-19 17 views
0

Panel内のチェックボックスが見つかりません。ここに私のコードです。ページの読み込み時に、動的にコントロールを追加します。それが適切にすべてのコントロールをロードします:ボタンUpdateでAsp.netパネル内のチェックボックスを検索する方法は?

if(!Page.IsPostBack){ 
foreach (var chk in chks) 
{ 
    PlSettings.Controls.Add(new LiteralControl("<div class=\"Controls\">")); 

    PlSettings.Controls.Add(chk); 

    PlSettings.Controls.Add(new LiteralControl("</div>")); 
} 
} 

を、私は、パネル内のすべてのコントロールをループしたいと思い、それが確認されたりいない場合checboxのタイプかどうかを確認してください。

foreach (var panelctrl in PlSettings.Controls) 
      { 

        if (panelctrl.GetType() == typeof(CheckBox)) 
        { 
         var checkbox = (CheckBox)chk; 

         if (checkbox.Checked) 
         { 
           userSettings.Add(Convert.ToInt32(checkbox.ID)); 
         } 
        } 

      } 

何らかの理由で、Panelにはリテラルコントロールが1つしかありません。内のコントロールはありません。

答えて

2

は、このコードでのforeachを更新します。

// if(!Page.IsPostBack){ 
foreach (var chk in chks) 
{ 
    PlSettings.Controls.Add(new LiteralControl("<div class=\"Controls\">")); 

    PlSettings.Controls.Add(chk); 

    PlSettings.Controls.Add(new LiteralControl("</div>")); 
} 
//} 

あなたはすべてのポストバックでダイナミックなコントロールを追加する必要があります。また、initまたはpreinit段階でこれが実行されていることを確認してください。

0

ではなく、このような何か試してみてください:

foreach (CheckBox chk in PlSettings.Controls.OfType<CheckBox>()) 
{ 
    //code here 
} 

そして、これらのコントロールは、動的に生成されているために、あなたはすべてのポストバックでコントロールを再作成する必要があります。 ViewStateがチェックされた状態をリロードできるように、毎回同じIDをコントロールに割り当てるようにしてください。

関連する問題