2011-07-12 15 views
0

ページ上のすべてのチェックボックスコントロールをカウントしようとしていますが、CSSクラスに基づいてカウントすることができます(またはValidationGroupなどをグループ化するために使用できる他のIDフィールド)。私はまだかなり緑色でC#です。ここに私のコード:ASP.NET:CSSクラスまたは他のIDフィールドに基づいてチェックボックスコントロールをカウントする

protected void submitButton_Click(object sender, EventArgs e) 
    { 
     int numCbSelected = 0; 
     foreach (CheckBox cb in Page.Controls) 
     { 
      numCbSelected = numCbSelected + 1; 
     } 
     errLabel.Text = numCbSelected.ToString(); 
    } 

答えて

2

あなたは次に

protected void submitButton_Click(object sender, EventArgs e) 
{ 
    int numCbSelected = CountCheckboxes(Page) 
    errLabel.Text = numCbSelected.ToString(); 
} 
+1

(CBがチェックボックスである)場合でも、中に保つ、それを呼び出してページ上のすべてのチェックボックス

private int CountCheckboxes(Control control) { CheckBox checkBox = control as CheckBox; int count = 0; if (checkBox != null) { if(checkBox.CssClass == "SomeClass") count++; } foreach (Control child in control.Controls) { count += CountCheckboxes(child); } return count; } 

を取得するために再帰のいくつかのフォームを行う必要があるでしょう'CssClass'はそのチェックボックスに割り当てられたクラスの* all *を参照することに注意してください。おそらく、CssClass文字列に「SomeClass」が含まれているかどうかを確認する必要があります。 –

+0

@Justin良い点 – Lourens

+0

Lourens&Justin、ありがとう。 Lourensのコードを使って(checkBox.CssClass.Contains( "guarCB"))を変更することができました。 – Barnes

-1

CSSはクライアント側の技術です。 CSSを使用してチェックボックスを数えたい場合は、クライアント側(JavaScriptなど)で行う必要があります。私はあなたがあなたのコードで持っているforeachを使うことはできないと思います。せいぜい、すべてのコントロールをチェックボックス(おそらくそれは?)にし、最悪の場合は失敗させます。

Page.Controlsのコントロールをループします。次に、コントロールの種類を確認します。実際にコーディングせずに、それはのようなものです:

foreach(Control cb in Page.Controls) 
{ 
    if(cb.GetType() == typeof(CheckBox)) 
    { //do something here 
    } 
} 

これはラフであり、あなたはそれを微調整する必要があるかもしれませんが、あなたは、カウントこのように設定することができます。

+0

'' –

関連する問題