asp:隐藏标签后标签更改可见性

时间:2015-06-10 18:14:50

标签: c# asp.net

我有一个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=true后尝试设置Visible=false,则会给我一个错误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与其他几个标签和下拉列表对齐;放入一个小组会使他们没有正确排队。

我猜测有些东西我不知道,有些东西我不知道,但我似乎无法弄清楚那是什么。如果有人知道发生了什么,我真的很感激你的帮助!

1 个答案:

答案 0 :(得分: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>