【发布时间】: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"><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=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 而不是每次都回发。
-
可能是个好主意,但他遇到的问题与可见性无关。任何回发都会导致问题发生。