我几乎可以肯定我以前做过这个,但我无法在任何地方找到它......
我在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名称。 我尝试设置选项卡和标签页的显示/可见性。没有任何效果。
答案 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();
}