0

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

我在 ajax TabContainer 中有 3 个选项卡,在外面有 2 个 CheckBox。除非两个 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。我尝试发送选项卡名称而不是选项卡容器名称。我尝试设置选项卡和选项卡标题的显示/可见性。没有任何效果。

4

1 回答 1

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 并且它具有客户端的页面生命周期以及您可以尝试LoadJavaScript 中的事件,因此将其添加到clinet 端代码:

Sys.Application.add_load(appLoaded);

function appLoaded(sender, eventArgs) {
   $find('<%=OptionsTabs.ClientID%>').get_tabs()[2]._hide();
}
于 2013-08-15T15:01:58.673 回答