【问题标题】:Checking CheckBox status in a For loop with an If使用 If 检查 For 循环中的 CheckBox 状态
【发布时间】:2011-12-26 06:59:46
【问题描述】:

我这里有一个简单的情况。我有一个带有“Accordion”的网络表单,其中包含一些“AccordionPanes”,并且在每个 AccordionPane 中都有一些“CheckBoxes”。总共大约 30 个复选框。

现在我需要检查每个复选框的状态。问题是如何!?我在考虑这样的“for循环”和“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 是语言。 谢谢你,我期待着你的回答。 问候。


已编辑:

我唯一的问题就是这个!你不能在这样的循环中使用复选框:Checkbox(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

【问题讨论】:

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


    【解决方案1】:

    使用布尔数组

    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 来执行此操作

    Loop through checkboxes and count each one checked or unchecked

    【讨论】:

    • 谢谢@UnhandledException,但这不起作用,我不知道确切原因,但不能说它无法识别页面中的 ant 复选框。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-30
    相关资源
    最近更新 更多