2011-11-14 14 views
0

ASP.NET Webページでチェックボックスをチェックするかどうかを判断するためにコントロールのリストを反復しようとしています。チェックボックスがうまくいけば、そのテキストは に追加されます。反復がエラーを返すか、チェックボックスタイプのコントロールが見つかりません(AJAXタブコンテナ内に10個のチェックボックスがあります)。 ここに私のコードのコピーがあります。asp.netフォームのコントロールを反復処理する

private void populateServiceList() 
    { 
     foreach (CheckBox checkbox in this.Form1.Controls.OfType<CheckBox>()) 
     { 

     if (checkbox.Checked == true) 
     { 
      this.services.Add(checkbox.Text); 
     } 
    } 
} 

答えて

0

EDIT:

これはあなたpopulateServiceList内側()メソッドを使用します

 List<String> temp = new List<string>(); 

     foreach (Control ctrl in TabContainer1.Controls) 
     { 
      if (ctrl.HasControls()) 
      { 
       foreach (Control subctrl in ctrl.Controls) 
       { 
        CheckBox TControl = subctrl as CheckBox; 
        if (TControl != null && TControl.Checked) 
        { 
         temp.Add(TControl.Text); 
        }       
       } 
      } 
     } 

enter image description here

+0

asp.netを削除することをお勧めします。彼はページ上の任意の場所にSystem.Windows.Forms.Checkboxを見つけるのに苦労します。 –

+0

は、すべてのコントロールにテキスト値がないことを考慮する必要があります。 – MasterP

+0

確認されたチェックボックスと確認されていないようです。 – MasterP

0

フォームのスキャンのルートにチェックボックスがない可能性があります。

通常、コンテナ内のすべての要素をスキャンするために再帰関数を使用します。

0

AJAXタブコントロールを更新して、代わりにCheckboxListコントロールを使用することを検討してください。

これは本当にオプションではない場合は、this.Form1.Controlsを変更してフォーム全体ではなくチェックボックスの直接的な親コントロールからコントロールコレクションを使用します。 6時07分CST @

+0

をthis.Form1.Controlsはエラーを投げました。タイプ 'System.Web.UI.LiteralControl'のオブジェクトをキャストして 'System.Web.UI.WebControls.CheckBox'と入力できません。 – MasterP

+1

@ MasterP - あなたは私の答えを読んだら、それともそれを外しましたか?ここでは、.OfType()チェック –