【问题标题】:CheckBox control in asp.net (C#)asp.net (C#) 中的 CheckBox 控件
【发布时间】:2011-10-18 00:42:54
【问题描述】:

我在表单中添加了一个复选框。

当复选框被选中时,一些信息(文本框、标签等)应该出现在复选框的正下方。

我该怎么做?

代码:

<asp:CheckBox ID="CheckBox1" runat="server" 
        oncheckedchanged="CheckBox1_CheckedChanged" />

C#:

protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
        
}

【问题讨论】:

    标签: c# asp.net checkbox


    【解决方案1】:

    别忘了autopostback = true

    <asp:CheckBox ID="CheckBox1" runat="server" oncheckedchanged="CheckBox1_CheckedChanged" AutoPostBack="true" />
    <asp:Panel runat="server" ID="panel1"></asp:Panel>
    

    -

    protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
    {
        panel1.Controls.Add(new Label { Text = "Text goes here" });
    }
    

    这允许您添加任何您想要的控件。

    【讨论】:

      【解决方案2】:

      只需添加 TextBox、Label 等控件并使其不可见。 然后在CheckBox1_CheckedChanged 函数中使它们可见。 这是通过设置 bool Visible 属性来完成的

      <asp:CheckBox ID="CheckBox1" runat="server" oncheckedchanged="CheckBox1_CheckedChanged" />
      <asp:TextBox ID="textBox" runat="server" Visible=false />
      

      protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
      {
          textBox.Visible = true;
      }
      

      【讨论】:

      • 您应该将所有控件包装在一个面板中。与许多其他控件相比,更改单个面板控件的可见性会更简单。此外,结构性 html 标签也将沿着服务器控件显示/隐藏
      【解决方案3】:

      在您的复选框标签下添加一个新的文字控件,

      <asp:Literal id="lblMsg" runat="server"/>
      

      然后在您的 CheckBox1_CheckedChanged 事件中改为:

      lblMsg.Text = "Checked";
      

      是的,将复选框的AutoPostBack 属性设置为true

      【讨论】:

        【解决方案4】:

        我建议使用 javascript 执行此操作。您的用户不必“回发”,应用程序的感觉会更好,并且您将减少服务器费用。

        使用 jQuery,你可以使用这样的东西:

        <script language="javascript" type="text/javascript">
         $(document).ready(function(){
              $("#chk").onclick(function() {
                  $("#content").toggle();
              });
          });
        </script>
        <input type="Checkbox" id="chk"/>
        <div id="content" style="display:none">
               <asp:TextBox runat="Server" id="oneOfYourControls" />
        </div>
        

        jQuery 不是强制性的...您可以使用标准简单的getElementById()

        唯一的缺点是您无法动态构建内容,但在大多数情况下这实际上并不重要

        【讨论】:

          【解决方案5】:

          在 Checked Changed Event 中编写如下代码:

          protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
          {
               Label1.Text = "Text";
          }
          

          【讨论】:

            猜你喜欢
            • 2011-03-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-05-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-05-22
            相关资源
            最近更新 更多