在带有If的For循环中检查CheckBox状态

本文关键字:检查 CheckBox 状态 循环 For If | 更新日期: 2023-09-27 18:14:00

我这里有一个简单的情况。我有一个网页表单'Accordion'其中有一些'AccordionPanes',在每个AccordionPane有一些'复选框'。大约30个复选框。

现在我需要检查每个复选框的状态。问题是怎么做到的?我正在考虑像这样的"for循环"answers"If条件":

for (i = 1; i <= 5; i++)
{
    if (CheckBox(i).Checked)
    {
        Label1.Text = "yeepee!";
    }
}

但看起来这不是使用'if state'的标准方式(看起来我不是专业开发人员!)。朋友们,你建议走哪条路?

为了使情况更明朗,这里是我在我的表单中使用的HTML代码:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:Accordion ID="Accordion1" 
                       runat="server"
                       HeaderCssClass="accordionHeader" 
                       HeaderSelectedCssClass="accordionHeaderSelected" 
                       ContentCssClass="accordionContent"  
                       SelectedIndex="0" 
                       FadeTransitions="false" 
                       FramesPerSecond="40" 
                       TransitionDuration="250" 
                       AutoSize="Fill" 
                       RequireOpenedPane="true" 
                       SuppressHeaderPostbacks="true">
            <Panes>
                <asp:AccordionPane ID="AccordionPane1" runat="server">
                    <Header>
                        <h1>title</h1>
                    </Header>
                    <Content>
                        <asp:CheckBox ID="CheckBox1" runat="server" Text="sometext" />
                        <asp:CheckBox ID="CheckBox2" runat="server" Text="sometext" />
                        <asp:CheckBox ID="CheckBox3" runat="server" Text="sometext" />
                        <asp:CheckBox ID="CheckBox4" runat="server" Text="sometext" />
                        <asp:CheckBox ID="CheckBox5" runat="server" Text="sometext" />
                        <asp:CheckBox ID="CheckBox6" runat="server" Text="sometext" />
                        <asp:CheckBox ID="CheckBox7" runat="server" Text="sometext" />
                    </Content>
                </asp:AccordionPane>
            </Panes>
            <Panes>
                <asp:AccordionPane ID="AccordionPane2" runat="server">
                    <Header>
                        <h1>title</h1>
                    </Header>
                    <Content>
                        <asp:CheckBox ID="CheckBox8" runat="server" Text="sometext" />
                        <asp:CheckBox ID="CheckBox9" runat="server" Text="sometext" />
                        <asp:CheckBox ID="CheckBox10" runat="server" Text="sometext" />
                    </Content>
                </asp:AccordionPane>
            </Panes>
            .
            <!--    some more Panes and Checkboxes!    -->
            .
        </asp:Accordion>
    </ContentTemplate>
</asp:UpdatePanel>

当然还有ASP。. Net是平台,c# . Net是语言。谢谢你,我期待着你的回答。问候。


编辑:

我唯一的问题就是这个!你不能像这样在循环中使用复选框:Checkbox(i)。检查:

   bool[] array = new bool[30];
   for (int i = 0; i < 30; i++)
   {
      array[i] = CheckBox(i).Checked ;
   }

我很想知道我如何使用一个变量的复选框的id,如:

i = 15;
CheckBox(i).Checked

代替:

CheckBox15.Checked

在带有If的For循环中检查CheckBox状态

使用数组

bool[] array = new bool[30];
for (int i = 0; i < 30 ; i++)  
{ 
 array [i] =CheckBox(i).Checked;
}

,但问题将得到页面中的所有文本框,你可以尝试下面的代码在页面加载

foreach (Control ctrl in Page.Controls) {
    if (ctrl is CheckBox) {
           array [i] =  ((CheckBox)ctrl).Checked;
    }
}

或者你可以尝试使用客户端jQuery或JavaScript

遍历复选框并计算每个已选中或未选中的