使用If检查For循环中的CheckBox状态

时间:2011-11-10 15:33:56

标签: c# asp.net checkbox for-loop accordion

我的情况很简单。我有一个带有'Accordion'的网页表格,其中有一些'AccordionPanes',每个AccordionPane都有一些'CheckBoxes'。共有约30个复选框。

现在我需要检查每个复选框的状态。问题是如何!?我正在考虑一个'for loop'和'If Condition'这样:

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是该语言。 谢谢,我期待着你的回答。 问候。


编辑:

谢谢大家,但我相信不太清楚。

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

   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

谢谢你们。

1 个答案:

答案 0 :(得分:2)

使用bool数组

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或java脚本

来执行此操作

Loop through checkboxes and count each one checked or unchecked

希望这会对你有所帮助。