我在呈现选项卡的地方创建了一个自定义控件。 在选项卡控件的页面加载方法上,我使用以下方法:
protected override void OnLoad(EventArgs e) {
base.OnLoad(e);
StringBuilder str = new StringBuilder();
str.Append("Sys.Application.add_load(pageLoad);");
str.Append("function pageLoad(event, args) {");
str.AppendFormat("$(\"#{0}\")", this.ClientID);
str.Append(".tabs({ beforeActivate: function(e,ui) {");
str.Append(CustomJSInSelectedTab);
str.Append(GetSetSelectedTabIndexScript());
str.Append("},");
str.Append(String.Format("active: {0}", indexOf(_hdnSelectedTabId.Value)));
str.Append("});");
str.Append("}");
ScriptUtility.RegisterStartupScript(this.Page, "_INITTABS", str.ToString());
}
private int indexOf(string p) {
if (string.IsNullOrEmpty(_hdnSelectedTabId.Value))
return 0;
int i = 0;
foreach (FlowTabItem t in Tabs)
{
string id = t.ControlID;
if (id.Equals(p))
return i;
i++;
}
return 0;
}
此代码的目的是在回发发生后保持所选选项卡不变。这在普通的 aspx 页面上工作正常,但如果我有这种更新面板
<asp:UpdatePanel ID="up1" runat="server" ChildrenAsTriggers="false" RenderMode="Inline" UpdateMode="Conditional">
<ContentTemplate>
...
</ContentTemplate>
</asp:UpdatePanel>
我点击了 Controller 的页面加载,并按预期获得了更新的 hdd 值,但它不会像我没有 updatePanel 时那样覆盖页面上的 js。
任何想法/建议或者解决方法?
干杯
最佳答案
当使用UpdatePanel
控件时,RegisterStartupScript
方法不起作用。要使其在 UpdatePanel
内部工作,请使用以下代码。这已经过测试,在我们的应用程序中运行良好。
ScriptManager.RegisterClientScriptBlock(page, page.GetType(), "TestScript", "alert(1)", true);
关于javascript - 如何在我的 aspx 上调用带有条件更新面板的自定义控件 javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35198832/