我知道如何隐藏标签:
MyTabContainerID.Tabs[1].Visible = false;
有效。我遇到的问题是更改由radioButtonList selectedIndexChanged事件的回发触发的选项卡的可见性。
当页面到达selectedIndexChanged事件处理程序时,选项卡已从ViewState加载Visible = True。我可以在selectedIndexChanged事件中整天将其更改为false,它不会隐藏它已经加载的标签b / c。
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; }
}
思考?建议?
答案 0 :(得分:2)
您应该能够在rblMyRadioButtonList_SelectedIndexChanged
方法中设置标签控件的可见性。即使此时已从ViewState加载了选项卡控件的状态,它仍然可以被覆盖。
我有一个类似的问题,Visibilty无法设置。这让我很生气。解决方案是在容器(父)控件中明确设置了可见性。这将覆盖子控件的设置。这可能是你的问题。
除此之外,那就照常做。 rblMyRadioButtonList_SelectedIndexChanged
上的断点并观察值。此外 - 您可以手动强制Page_PreRender
上的可见性 - 这仍然是下游的。
修改强>
可能影响它的另一件事是更新面板。如果radiobutton列表位于更新面板中且选项卡位于其外部,则更新将不会作为页面的一部分工作,并且不会刷新选项卡。
答案 1 :(得分:0)
这是我最终做的事情:
*的 .ASPX 强>
<script type="text/javascript">
function disableTab1() {
$find('<%=MyTabContainer.ClientID%>').get_tabs()[1].set_enabled(false);
}
function enableTab1() {
$find('<%=MyTabContainer.ClientID%>').get_tabs()[1].set_enabled(true);
}
</script>
<!--THESE RADIOBUTTONS LEVERAGE THE TAB CONTAINER'S CLIENTSIDE set_enabled METHOD
<asp:RadioButtonList ID="rblMyRadioButtonList" runat="server" RepeatDirection="Horizontal" RepeatLayout="Flow">
<asp:ListItem Text="Yes" Value="True" Selected="True" onClick="enableTab1();"></asp:ListItem>
<asp:ListItem Text="No" Value="False" onClick="disableTab1();"></asp:ListItem>
</asp:RadioButtonList>
* .ASCX on Page_Load
//I RUN A SQL QUERY TO DETERMINE WHETHER OR NOT TO DISABLE TAB1 HERE
//IF IT SHOULD BE DISABLED I REGISTER THIS STARTUP SCRIPT
ClientScriptManager cs = Page.ClientScript;
Type cstype = this.GetType();
String csScriptName = "Tab1_Visibility";
if (!cs.IsStartupScriptRegistered(cstype, csScriptName))
{
cs.RegisterStartupScript(this.Page.GetType(), csScriptName, "setTimeout(function() { disableTab1()}, 0);", true);
}