2013-10-03 3 views
0

Я просто сижу перед моим первым реальным проектом asp.net C#, и я не знаю, как проверить, что пользователь должен проверить 4 флажка, чтобы перейти к следующему шагу на моем сайте.asp.net C# 4 checkbox validation

ASP.Net

<div class="panel-body"> 
<p>Select 4 Items from the List</p> 
<label class="checkbox"> 
    <asp:CustomValidator ID="SelectValidator" runat="server" 
     ErrorMessage="Please select FOUR (4) Items!" 
     OnServerValidate="SelectValidator_ServerValidate"></asp:CustomValidator> 
    <asp:CheckBox ID="CheckBox1" Text="" runat="server" /><br> 
    <asp:CheckBox ID="CheckBox2" Text="" runat="server" /><br> 
    <asp:CheckBox ID="CheckBox3" Text="" runat="server" /><br> 
    <asp:CheckBox ID="CheckBox4" Text="" runat="server" /><br> 
    <asp:CheckBox ID="CheckBox5" Text=" " runat="server" /><br> 
    <asp:CheckBox ID="CheckBox6" Text="" runat="server" /><br> 
    <asp:CheckBox ID="CheckBox7" Text="" runat="server" /><br> 
    <asp:CheckBox ID="CheckBox8" Text="" runat="server" /><br> 
    <asp:CheckBox ID="CheckBox9" Text="" runat="server" /><br> 
</label> 
</div> 

Код За

protected void SelectValidator_ServerValidate(object source, ServerValidateEventArgs args) 
{ 
    args.IsValid = CheckBox1.Checked; 
} 

То есть то, что я и нашел в интернете прямо сейчас для сервера и Clientsite.

+0

Вы можете использовать 'count', чтобы подсчитать общее количество флажков! Я не могу понять веб-формы, но все же могу дать вам догадки! :) –

+0

Четыре и только 4? Вы пытались изменить его в соответствии с вашими потребностями? Почему ты не смог заставить его работать? Считаете ли вы использование [CheckBoxList] (http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.checkboxlist.aspx)? –

ответ

0

Попробуйте использовать элемент управления CheckBoxList (MSDN). Затем в коде-позади, попробуйте следующее:

// count how many checkboxes are checked 
var checkedItemCount = chkBoxList.Items.Count(li => li.Selected) 
1

Вы можете использовать JQuery, и отключить/включить кнопку на основе подсчета ...

$("input:checkbox:checked").length 

Если длина> = 4, затем включите кнопку. Это предотвратит postbacks, но затем вы можете проверить количество нажатий на кнопку, чтобы убедиться, что 4 действительно проверены, что дает только одну обратную передачу.

0

Вот то, что должно удовлетворить вашу проблему:

http://www.aspsnippets.com/Articles/Validate-ASPNet-CheckBoxList-at-least-one-CheckBox-checked-using-Custom-Validator.aspx

Я уверен, что изменение этого фрагмента кода в соответствии с вашими потребностями будет довольно просто.

Edit: Часть вы должны изменить, чтобы проверить точно 4 проверил коробки выглядит следующим образом:

<script type="text/javascript"> 
    function ValidateCheckBoxList(sender, args) { 
     var checkBoxList = document.getElementById("<%=chkFruits.ClientID %>"); 
     var checkboxes = checkBoxList.getElementsByTagName("input"); 
    var checkboxCounter = 0; 
     for (var i = 0; i < checkboxes.length; i++) { 
      if (checkboxes[i].checked) { 
       checkboxCounter++; 
      } 
     } 
     args.IsValid = (checkboxCounter == 4); 
    } 
</script> 

Единственное, что осталось, чтобы изменить это некоторые фруктовые ссылки здесь и там, и содержание самого CheckBoxList.

+0

спасибо за ваш ответ, я попробовал это, но я не знаю, какую переменную мне нужно изменить, чтобы получить как минимум 4 флажка. – user2157063