【问题标题】:asp:label change visibility after hiding itasp:label 隐藏后更改可见性
【发布时间】:2015-06-10 18:14:50
【问题描述】:

我有一个asp:Label 和一个asp:DropDownList,我希望能够在单击某些按钮时在可见和不可见之间来回切换。现在,我的代码看起来像

aspx 文件

<asp:Label AssociatedControlID="statusFilter" id="statusFilterLabel" runat="server" CssClass="filterLabel">Status
    <asp:DropDownList ID="statusFilter" runat="server" CssClass="filterInput" AutoPostBack="true" OnSelectedIndexChanged="anyFilter_SelectedIndexChanged" AppendDataBoundItems="True">
        <asp:ListItem Selected="True" Value=" 0">&lt;All&gt;</asp:ListItem>
    </asp:DropDownList>
</asp:Label>
<asp:Button Text="ALL" ID="AllTabButton" CssClass="tabButton" runat="server" OnClick="AllTab_Click" />
<asp:Button Text="Arrived" ID="ArrivedTabButton" CssClass="tabButton" runat="server" OnClick="ArrivedTab_Click" />

后面的代码

    protected void AllTab_Click(object sender, EventArgs e)
    {
        AllTabButton.CssClass = "tabButtonClicked";
        ArrivedTabButton.CssClass = "tabButton";
        statusFilter.Visible = true;
        statusFilterLabel.Visible = true;
    }
    protected void ArrivedTab_Click(object sender, EventArgs e)
    {
        AllTabButton.CssClass = "tabButton";
        ArrivedTabButton.CssClass = "tabButtonClicked";
        statusFilter.Visible = false;
        statusFilterLabel.Visible = false;
    }

唯一的问题是,如果我在设置Visible=false 之后尝试设置Visible=true,它会给我一个错误Unable to find control with id 'statusFilter' that is associated with the Label 'statusFilterLabel'.

我尝试做一些其他的事情而不是使用 Visible,比如设置样式:statusFilter.Style.Add("display", "block") 和设置 cssclass:statusFilter.CssClass = "displayBlock",但结果总是出现。

一个 asp:Panel 可以工作,但我避免使用它,因为我希望我的 asp:Label 和 asp:DropDownList 与其他几个标签和下拉列表对齐;放入面板会使它们无法正确排列。

我猜我错过了一些东西,我只是不明白,但我似乎无法弄清楚那是什么。如果有人对正在发生的事情有任何线索,我将非常感谢您的帮助!

【问题讨论】:

  • 使用 javascript 而不是每次都回发。
  • 可能是个好主意,但他遇到的问题与可见性无关。任何回发都会导致问题发生。

标签: c# asp.net


【解决方案1】:

它不能总是在回发时找到控件,因为它是 statusFilter 的子项。将输入字段移到标签外:

<asp:Label AssociatedControlID="statusFilter" id="statusFilterLabel" runat="server" CssClass="filterLabel">Status
</asp:Label>
<asp:DropDownList ID="statusFilter" runat="server" CssClass="filterInput" AutoPostBack="true" OnSelectedIndexChanged="anyFilter_SelectedIndexChanged" AppendDataBoundItems="True">
    <asp:ListItem Selected="True" Value=" 0">&lt;All&gt;</asp:ListItem>
</asp:DropDownList>

【讨论】:

  • 太棒了,就是这样!谢谢!
猜你喜欢
  • 1970-01-01
  • 2010-11-02
  • 2012-02-23
  • 2013-12-01
  • 1970-01-01
  • 2012-05-10
  • 2013-06-01
  • 2013-12-28
  • 2018-11-14
相关资源
最近更新 更多