Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# AJAXToolkit动态隐藏选项卡?_C#_Asp.net - Fatal编程技术网

C# AJAXToolkit动态隐藏选项卡?

C# AJAXToolkit动态隐藏选项卡?,c#,asp.net,C#,Asp.net,我知道如何隐藏选项卡: MyTabContainerID.Tabs[1].Visible = false; 这很有效。我遇到的问题是更改由radioButtonList selectedIndexChanged事件的回发触发的选项卡的可见性 当页面到达我的selectedIndexChanged事件处理程序时,该选项卡已从ViewState加载Visible=True。我可以在selectedIndexChanged事件中将其全天更改为false,它不会隐藏已加载的选项卡b/c ASPX &l

我知道如何隐藏选项卡:

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>
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; }
}
<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

<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>
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; }
}
<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>
受保护的无效页\u Init(对象发送方,事件参数e)
{
尝试
{
MyTabContainerID.Tabs[1].Visible=Tab1Visibility;
}
捕获(例外情况除外)
{
common.alert(“PageName.Page_Init.
Error=“+ex.Message中的错误”); } } 受保护的无效rblMyRadioButtonList_SelectedIndexChanged(对象发送方,事件参数e) { 尝试 { Tab1Visibility=Convert.ToBoolean(((RadioButtonList)sender.SelectedValue); MyTabContainerID.Tabs[1].Visible=Tab1Visibility;//发生这种情况时,它已经在Visible=TRUE的页面上 } 捕获(例外情况除外) { common.alert(“PageName.rblMyRadioButtonList_SelectedIndexChanged中出错。
Error=“+ex.Message”); } } 受保护的布尔表1可见性 { 获取{return(bool)会话[“ses_bTab1Visibility”];} 设置{Session[“ses_bTab1Visibility”]=value;} }

想法?建议?

您应该能够在
rblMyRadioButtonList\u SelectedIndexChanged
方法中设置选项卡控件的可见性。即使此时已从ViewState加载选项卡控件的状态,仍可以覆盖它

我有一个类似的问题,就是无法设置可见性。我快疯了。解决方案是在容器(父级)控件中显式设置可见性。这将覆盖子控件的设置。这可能是你的问题吗

除此之外,照常做。
rblMyRadioButtonList上的断点\u选择的索引已更改
并监视值。另外-您可以手动强制在
页面_PreRender
上显示,该页面仍然位于下游

编辑


另一个可能影响它的因素是更新面板。如果radiobutton列表位于更新面板中,而选项卡位于其外部,则更新将无法工作,因为带有选项卡的页面部分将无法刷新

以下是我最后做的事情:

*.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>
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; }
}
<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>

不仅在我的selectedIndexChanged事件中将选项卡可见性设置为False,而且根据您的建议,我在页面预渲染中再次将其设置为False。该选项卡在页面加载时仍然可见。如果我将选项卡的可见性设置为False!IsPostBack,这很有效。但是,当设置回发的可见性时,我没有得到任何乐趣。可能值得注意的是页面层次结构:页面>选项卡容器>选项卡面板>FormView>RadioButtonlistah…您的编辑有一定的意义…这很可能是问题所在…我还需要进一步研究。