2016-04-27 7 views
1

Ich habe mehrere einzelne Kontrollkästchen (50).Anzahl der Checkbox überprüft

wie folgt aus:

<asp:CheckBox runat="server" ID="chkBirthDate" /> 

ich wissen muss, wie viele Kontrollkästchen der Benutzer ausgewählt hat (Count). Wenn er mehr als 3 ausgewählt hat, lasse ich ihn passieren, wenn ich ihm nicht eine Fehlermeldung übergebe.

Vielen Dank im Voraus!

Antwort

4

LINQ Ansatz

Sie Vorteil der abfragenden Fähigkeit von LINQ nehmen könnte die OfType<T>() Methode unter Verwendung aller Ihrer individuellen CheckBox Kontrollen zu greifen und dann einen Count() Anruf zu sehen, wie tatsächlich geprüft wurden viele:

// Get the number of CheckBox Controls that are checked 
var checkedBoxes = Form.Controls.OfType<CheckBox>().Count(c => c.Checked); 
// Determine if your specific criteria is met 
if(checkedBoxes > 3) 
{ 
     // You shall pass! 
} 
else 
{ 
     // None shall pass 
} 

Sie benötigen, um sicherzustellen, dass Sie einen Verweis auf LINQ haben hierfür die folgende using-Anweisung, indem als gut zu funktionieren:

using System.Linq; 

Iterative Looping Ansatz

Alternativ können Sie einfach durchlaufen und eine Zählung entsprechend über eine foreach Schleife erhöht, wie unten zu sehen:

// Store your count 
var checkedBoxes = 0; 
// Iterate through all of the Controls in your Form 
foreach(Control c in Form.Controls) 
{ 
    // If one of the Controls is a CheckBox and it is checked, then 
    // increment your count 
    if(c is CheckBox && (c as CheckBox).Checked) 
    { 
     checkedBoxes++; 
    } 
} 

Beispiel (mit Ausgang)

Sie können a GitHub Gist that fully reproduces this here finden und unten gezeigt:

enter image description here

+0

Es erkennt mich nicht den OfType. Benötige ich etwas? –

+0

Versuchen Sie, einen Verweis auf LINQ über 'using System.Linq;' hinzuzufügen. –

+0

Muss ich etwas ersetzen? weil es keine aktivierten Kontrollkästchen enthält –

Verwandte Themen