我有一个asp:Label
和一个asp:DropDownList
我希望能够在点击某些按钮时在可见和不可见之间来回切换。现在,我的代码看起来像
<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"><All></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与其他几个标签和下拉列表对齐;放入一个小组会使他们没有正确排队。
我猜测有些东西我不知道,有些东西我不知道,但我似乎无法弄清楚那是什么。如果有人知道发生了什么,我真的很感激你的帮助!
答案 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"><All></asp:ListItem>
</asp:DropDownList>