在C#中使用tabpanel的._hide()等价

时间:2013-08-14 19:28:06

标签: javascript ajax tabpanel

我几乎可以肯定我以前做过这个,但我无法在任何地方找到它......

我在ajax TabContainer中有3个标签,外面有2个CheckBoxes。除非两个CheckBox都未选中,否则所有3个选项卡都是可见的,在这种情况下应隐藏第3个选项卡。

当复选框值发生变化时,我可以在javascript中显示/隐藏

    $find('<%=OptionsTabs.ClientID%>').get_tabs()[2]._hide();
    $find('<%=OptionsTabs.ClientID%>').get_tabs()[2]._show();

但在PageLoad上,我无法使用C#。我尝试设置显示和可见性,但都没有隐藏标签。唯一有效的方法是设置Visible = false,但是如果我这样做,则根本不会呈现选项卡,并且javascript以后无法显示。

修改 我尝试在PageLoad中注册相同的脚本,但仍无法正常工作

    string script = "<script type=text/javascript> $find('<%=OptionsTabs.ClientID%>').get_tabs()[2]._hide(); </script>";

    ClientScriptManager cs = Page.ClientScript;
    String csname1 = "TabScript";
    Type cstype = this.GetType();
    cs.RegisterStartupScript(cstype, csname1, script);

这里的OptionsTabs为空。

我尝试发送ClientID,我得到服务器端。 我尝试发送选项卡名称而不是tabcontainer名称。 我尝试设置选项卡和标签页的显示/可见性。没有任何效果。

1 个答案:

答案 0 :(得分:0)

试试这段代码:

string script = "$find('" + OptionsTabs.ClientID + "').get_tabs()[2]._hide();";
ClientScriptManager cs = Page.ClientScript;
String csname1 = "TabScript";
Type cstype = this.GetType();
cs.RegisterStartupScript(cstype, csname1, script, true);

作为替代方案,既然您正在使用MS Ajax并且它具有客户端的页面生命周期,您可以在JavaScript中尝试Load事件,将其添加到 clinet-side 代码:

Sys.Application.add_load(appLoaded);

function appLoaded(sender, eventArgs) {
   $find('<%=OptionsTabs.ClientID%>').get_tabs()[2]._hide();
}