我知道如何隐藏选项卡:
MyTabContainerID.Tabs[1].Visible = false;
这有效。我遇到的问题是更改由 radioButtonList selectedIndexChanged 事件回发触发的选项卡的可见性。
当页面到达我的 selectedIndexChanged 事件处理程序时,选项卡已经从 ViewState 加载了 Visible=True。我可以在 selectedIndexChanged 事件中将其更改为 false 一整天,它不会隐藏已加载的选项卡。
ASPX
<asp:RadioButtonList ID="rblMyRadioButtonList" runat="server" AutoPostBack="true" OnSelectedIndexChanged="rblMyRadioButtonList_SelectedIndexChanged">
<asp:ListItem Text="Yes" Value="True" Selected="True"></asp:ListItem>
<asp:ListItem Text="No" Value="False"></asp:ListItem>
ASCX
protected void Page_Init(object sender, EventArgs e)
{
try
{
MyTabContainerID.Tabs[1].Visible = Tab1Visibility;
}
catch (Exception ex)
{
common.alert("Error in PageName.Page_Init.<br>ERROR=" + ex.Message);
}
}
protected void rblMyRadioButtonList_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
Tab1Visibility = Convert.ToBoolean(((RadioButtonList)sender).SelectedValue);
MyTabContainerID.Tabs[1].Visible = Tab1Visibility; //BY THE TIME THIS HAPPENS IT'S ALREADY ON THE PAGE WITH VISIBLE=TRUE
}
catch (Exception ex)
{
common.alert("Error in PageName.rblMyRadioButtonList_SelectedIndexChanged.<br>ERROR=" + ex.Message);
}
}
protected bool Tab1Visibility
{
get { return (bool)Session["ses_bTab1Visibility"]; }
set { Session["ses_bTab1Visibility"] = value; }
}
想法?有建议吗?
最佳答案
您应该能够在 rblMyRadioButtonList_SelectedIndexChanged
方法中设置选项卡控件的可见性。即使选项卡控件的状态此时已从 ViewState 加载,它仍然可以被覆盖。
我遇到了类似的问题,无法设置可见性。这让我发疯。解决方案是在容器(父)控件中显式设置可见性。这将覆盖子控件的设置。这可能是你的问题。
除此之外,再做平常的事情。 rblMyRadioButtonList_SelectedIndexChanged
上的断点并监视值。另外 - 您可以手动强制 Page_PreRender
上的可见性 - 这仍然在下游。
编辑
另一个可能影响它的事情是更新面板。如果单选按钮列表位于更新面板中,而选项卡位于更新面板之外,则更新将不起作用,因为带有选项卡的页面部分不会刷新。
关于c# - AJAXToolkit动态隐藏选项卡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11156553/