无法使用更新面板从代码隐藏触发JavaScript方法
问题描述:
问题详细信息:无法使用更新面板从代码隐藏触发JavaScript方法
将数据保存到数据库后,我需要向用户显示警报。 为此,我有从代码隐藏注册脚本。 但它是不与更新面板一起工作,而它按预期工作而没有更新面板。 我需要使它适用于更新面板。
我试着在注册脚本时加入$(document).ready(function()
,但没有奏效。
然后,我用ScriptManager.RegisterClientScriptBlock()
方法而不是Page.ClientScript.RegisterStartupScript()
,但它也没有工作。
这里是网页的代码段(C++):
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:Button ID="btnOutsideUpdatePanel" runat="server" Text="Outside UpdatePanel" OnClick="btnOutsideUpdatePanel_Click" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Button ID="btnInsideUpdatePanel" runat="server" Text="Inside UpdatePanel" OnClick="btnInsideUpdatePanel_Click" />
</ContentTemplate>
</asp:UpdatePanel>
<uc1:Child runat="server" id="Child1" />
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<uc1:Child runat="server" id="Child2" />
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
这里是用户控件(ASCX)的代码片断:网页的
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Child.ascx.cs" Inherits="UpdatePanelAndScript.Child" %>
<asp:Button ID="btnUserControl" runat="server" Text="User Control" OnClick="btnUserControl_Click" />
代码隐藏:用户控制的
protected void btnOutsideUpdatePanel_Click(object sender, EventArgs e)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "ShowSuccess", "alert('Hi');", true);
}
protected void btnInsideUpdatePanel_Click(object sender, EventArgs e)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "ShowSuccess", "alert('Hi');", true);
}
代码隐藏:
protected void btnUserControl_Click(object sender, EventArgs e)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "ShowSuccess", "alert('Hi');", true);
}
答
你只需要修改下面的语句:
Page.ClientScript.RegisterStartupScript
(
this.GetType(),
"ShowSuccess",
"alert('Hi');",
true
);
要:
ScriptManager.RegisterStartupScript
(
this,
this.GetType(),
"ShowSuccess",
"alert('Hi');",
true
);
参考:
注册局部页面更新兼容脚本
[...]如果你是渲染UpdatePanel控件内使用脚本,请确保您调用ScriptManager控件的方法。
是的,它在上面的代码片段中工作。 感谢 但是,预期它不工作实际的代码库整合之后(这是工作的一部分).. 问题描述: 我有更新面板内的AJAX文件上传控制。 案例1: 当我添加update-panel属性“updateMode ='conditional'”时,弹出按预期工作。 但是,在更新面板之外保留的控件在部分回发后不会呈现。 案例2: 我删除了更新面板属性“updateMode ='conditional'”,弹出窗口根本不起作用 即脚本没有在DOM中获得注册。 –
_“但是在更新面板外部保存的控件在部分回发后不会得到渲染”_。您的控件是否动态生成?你能提供必要的代码来重现你的问题吗? – krlzlx