2016-04-29 19 views
0

たとえば、私は3つのチェックボックス(IDはチェックボックス1、チェックボックス2、チェックボックス3)を持っています。私はコードの中でループを行い、それらをSQLキューの結果に基づいて無効にする必要があります。しかし、もし私が10以上のチェックボックスを持っていれば、私はそれを一つずつ行うことができず、チェックすべき多くの論理があります。どうしたらいいですか?ありがとう。asp.netのコントロール名の数値でコントロールをループする方法

+0

まず、3つのチェックボックスがあり、10を超えると答えています。 –

+0

@TimSchmelterは、最初に少数の名前を印刷し、実際のOPのユースケースを10+にします。十分にクリアな音 – Andrei

+0

コントロールIDにロジックを追加しないでください。名前は単なる名前であり、 'checkbox14'よりも意味があります。 1つが 'bool'プロパティである場合、複数のプロパティを持つクラスを使用します。その後、データベースクエリから初期化し、 'List 'に入れます。 'GridView'、' Repeater'、または 'DataList'を' TemplateFields'と一緒に使って 'CheckBox'をそこに置きます。次に、それをデータバインドし、ロジックを適切なイベントハンドラに入れます。 'RowDataBound'は' GridView'を使用しています。 –

答えて

0

Control.FindControlを使用すると、コンテナ内のIDを使用してコントロールを取得できます。フォームにチェックボックスがある場合はthis.FindControlを使用できます。

int numberofControls=4; 
for(int i=1; i < numberofControls; i++) 
    ((CheckBox)parentControlId.FindControl("checkbox" + i)).Enabled = false; 

あなたがコントロールしていない可能性がある場合は、コントロールがあるかどうかを確認することをお勧めします。

for(int i=1; i < numberofControls; i++) 
{ 
    CheckBox checkbox = ParentControl.FindControl("checkbox" + i) as Checkbox; 
    if(checkbox != null) 
      checkbox.Enabled = false; 
} 
0

一般的な方法は、配列を宣言し、そこにあなたのすべてのコントロールを配置するようになります:

Checkbox[] checkboxes = new Checkbox[]{CheckboxOne, CheckboxTwo, AnotherCheckbox}; 

あなたはできることをループやすいです。これにより、コントロールの任意の名前が可能になることに注意してください。

コントロールIDが文字通りControlNameXのパターンに従う場合にのみ適用される別のアプローチは、FindControlを使用することです。

for (int i=1; i<=3; i++) 
{ 
    Checkbox c = ParentControl.FindControl("Checkbox" + i) as Checkbox; 
} 

はまたFindControlはあなたを介してループしているすべてのコントロールは、一つの共通の親コントロール内であることを持っていることを意味直接の親、で呼び出さなければならないことに注意してください。

関連する問題