【问题标题】:Hide and Show Label and Button隐藏和显示标签和按钮
【发布时间】:2017-07-07 07:09:20
【问题描述】:

我显示了 2 个标签、2 个文本框和 1 个按钮。

当页面加载时NameButton(最初会显示)。稍后当我点击Button 时,我需要显示age labeltextbox。我该怎么做?

<ol>
     <li>
          <asp:Label runat="server" AssociatedControlID="Name">
             User name
          </asp:Label>
          <asp:TextBox runat="server" ID="Name" Width="167px" />
          <asp:Button ID="Button1" runat="server" Text="Button" />
     </li>                           
     <li>
          <asp:Label runat="server" AssociatedControlID="age">age</asp:Label>
          <asp:TextBox runat="server" ID="age" TextMode="age" Width="240px" />
     </li>                         
</ol>

按键代码

protected void Button1_Click(object sender, EventArgs e)
{

}

【问题讨论】:

  • 一些更清楚的解释

标签: c# asp.net


【解决方案1】:

您可以在服务器端将标签/文本框Visible 属性设置为True。或者,您可以使用JavaScript 来避免回发到服务器。

OnClientClick 添加到您的button

<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="ShowLabel();"/>

并在页面上声明JavaScript 函数:

<script type="text/javascript">
    function ShowLabel() {
      // Note that the client ID might be different from the server side ID
      document.getElementById('lblAge').style.display = 'inherit';
    }
</script>

最初需要将Label的显示样式设置为none

<asp:Label ID="lblAge" style="display: none;" runat="server" AssociatedControlID="age">age</asp:Label>

【讨论】:

    【解决方案2】:

    试试下面的代码:

    您需要根据您的要求将控件的Visible属性设置为True或False。默认情况下,所有控件在页面上添加时都会显示在屏幕上。您需要执行以下操作:

    1. 您需要删除TextMode="age",因为没有任何支持的年龄类型的文本模式。
    2. 如果你想在后面的代码中访问控制服务器端,需要定义控制ID。因此,定义您放置的标签的 ID 对应于年龄文本框。

    默认情况下,使用以下代码将看不到年龄标签和文本框:

          <asp:Label ID="lblAge" runat="server" AssociatedControlID="age" Visible="false">age</asp:Label>
          <asp:TextBox runat="server" ID="age" Width="240px"  Visible="false"/>
    

    后面的代码: 按钮单击年龄标签后,使用以下代码可以看到文本框:

    protected void Button1_Click(object sender, EventArgs e)
        {
            lblAge.Visible = true;
            age.Visible = true;
        }
    

    【讨论】:

    • 表示当前上下文中不存在Label2
    【解决方案3】:

    首先将id添加到元素并设置visible为false

    <asp:Label runat="server" AssociatedControlID="age" Visible="false" Id="lbl1">age</asp:Label>
    <asp:TextBox runat="server" ID="age" TextMode="age" Width="240px" Visible="false" /> 
    

    按钮点击事件设置visibletrue

    protected void Button1_Click(object sender, EventArgs e)
    {
        lbl1.Visible = True;
        age.Visible = True;
    }
    

    【讨论】:

    • 表示lbl1 字段在当前上下文中不存在
    • 您应该在标签中添加Id 属性。
    • 你的意思是把ID改成Id?在我的代码中,我将其命名为ID,这是正确的吗?
    • 不,我没有。您可以使用带有 ID 的年龄文本框吗?我的代码可能存在语法错误。更新了...
    • 我尝试将所有ID 替换为Id,甚至在文本框上尝试过,但没有成功
    【解决方案4】:

    这是asp.net的基本概念。您可以使用控件的可见属性。

    1. 您的 TextMode 枚举错误。 Textbox.TextMode TextMode 没有年龄枚举

    <li> <asp:Label runat="server" AssociatedControlID="age" id="lblAge">age</asp:Label> <asp:TextBox runat="server" ID="age" TextMode="age" Width="240px" /> </li>

    在后面的代码中

    protected void Button1_Click(object sender, EventArgs e)
    {
      lblAge.Visible=true;
      age.Visible=true;
    }
    

    【讨论】:

    • 您能解释一下如何将 lblAge 从 aspx 文件引用到 C# 代码。正如您在代码中所做的那样。 (我是新手)
    • 为什么你使用ID(大写)作为文本字段和小写ID作为标签。有什么区别吗?
    • 我仍然未能完成这项工作。任何线索为什么?我错过了参考吗?
    【解决方案5】:
        protected void Page_Load(object sender, EventArgs e)
        {
            NameLabel.Visible = false;
            NameBox.Visible = false;
        }
    
        protected void Button1_Click(object sender, EventArgs e)
        {
            NameLabel.Visible = true;
            NameBox.Visible = true;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-07
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多