如何在我的 aspx 上使用条件更新面板调用自定义控件 javascript



我创建了一个自定义控件,用于呈现选项卡。在选项卡控件的页面加载方法上,我使用以下方法:

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>

我命中了控制器的页面加载,并按预期获得了更新的 hdd 值,但它不会像我没有 updatePanel 时那样覆盖页面上的 js。

任何想法/建议或工作轮

干杯

使用 UpdatePanel 控件时,RegisterStartupScript 方法不起作用。要使其在内部工作UpdatePanel请使用以下代码段。这已经过测试,在我们的应用程序中工作得很好。

ScriptManager.RegisterClientScriptBlock(page, page.GetType(), "TestScript", "alert(1)", true);

也许这不是你想要的,但你可以从中获得好的想法:自定义控件中的 UpdatePanel 和 ClientScript

最新更新