2013-07-23 32 views
0

我需要驗證是否存在未選中的複選框。 我在我的btnSend_OnClick事件中進行了驗證。如果存在一個複選框未選中,它啓用我的標籤與消息錯誤。但是如果我有其他行,並且已經檢查過,它是如何是一個foreach,不要顯示我的消息錯誤! 如何使用C#構建驗證是否存在複選框,並立即向用戶顯示消息並停止我的foreach?我很清楚?驗證CheckBox在foreach中檢查

我的CS:

protected void btnSend_OnClick(object sender, EventArgs e) 
{ 
    foreach (GridViewRow row in GridView.Rows) 
    { 
     CheckBox check = (CheckBox)row.FindControl("CheckBox1"); 
     CheckBox check2 = (CheckBox)row.FindControl("CheckBox2"); 

     if (check.Checked == false && check2.Checked == false) 
     { 
      lblErrorCheck.Visible = true; 
     } 

     else 
     { 

     } 
    } 
} 

我的頁面:

<body> 
<form id="form1" runat="server"> 
<div> 
    <div class="control-group error"> 
     <asp:Label ID="lblErrorCheck" runat="server" class="control-label" for="inputError" 
      Visible="false">Please, check a checkbox for each folder!</asp:Label> 
    </div> 
    <asp:GridView ID="GridView" runat="server" AutoGenerateColumns="false" GridLines="None" 
     CssClass="table table-bordered table-striped"> 
     <Columns> 
      <asp:BoundField DataField="AccessGroup" HeaderText="Access Group" /> 
      <asp:TemplateField HeaderText="Access Type"> 
       <ItemTemplate> 
        <asp:CheckBox ID="CheckBox1" runat="server" Text="Access to Read" OnCheckedChanged="CheckBox1_ChangeCheck" 
         AutoPostBack="true" /> 
        <asp:CheckBox ID="CheckBox2" runat="server" Text="Access to Modify" OnCheckedChanged="CheckBox2_ChangeCheck" 
         AutoPostBack="true" /> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
    </asp:GridView> 
    <asp:Button ID="btnSend" class="btn btn-large" runat="server" Text="Send Request Access" 
     OnClick="btnSend_OnClick" align="left" /> 
</div> 
<div align="center" style="width: auto; height: auto;"> 
    <asp:HyperLink ID="HyperLink2" runat="server" ImageUrl="~/image/home_back_48.png" 
     NavigateUrl="~/home.aspx">homepage</asp:HyperLink> 
</div> 
</form> 

回答

0

我不知道如果我理解你。但是如果你想在循環時停止複選框是選中不使用這樣的:

if (check.Checked == false && check2.Checked == false) 
    { 
     lblErrorCheck.Visible = true; 
     break; 
    } 
1

試試這個

protected void btnSend_OnClick(object sender, EventArgs e) 
{ 
foreach (GridViewRow row in GridView.Rows) 
{ 
    CheckBox check = (CheckBox)row.FindControl("CheckBox1"); 
    CheckBox check2 = (CheckBox)row.FindControl("CheckBox2"); 

    if (!check.Checked && !check2.Checked) 
    { 
     lblErrorCheck.Visible = true; 
     break; 
    } 

} 
} 

希望它可以幫助你。

這裏的break;子句告訴循環在到達該行時停止。 參加this MSDN article瞭解更多詳情。

+0

Tks for your help!它適用於一個複選框。我使用6行進行測試,並且當我最後一個checkBox取消選中時,發送無誤。這是錯誤的,在這種情況下,顯示我的錯誤。 – CaioVJesus89

+0

這只是在第一次Foreach負載工作。 – CaioVJesus89

+0

是拋出異常還是給出一些其他錯誤。該代碼工作在'click'按鈕上,然後可能會在'取消選中'複選框上拋出錯誤。請詳細說明您的問題。 –