如何在asp.net中的UserControlPostBack上执行JavaScript
How to execute JavaScript on UserControl PostBack in asp.net?
我们有一个由多个用户控件组成的asp.net页面,其中许多控件的visible
属性设置为false
。通过选择单选按钮,可以通过在后面的代码中将visible
属性设置为true
来显示其中一个用户控件。当这种情况发生时,我们希望运行一个JavaScript函数。脚本已使用页面的Page_Load
方法中的ScriptManager.RegisterStartUpScript
进行了注册。
我们怎样才能做到这一点?
我们尝试过的东西:
- 在用户控件中注册脚本(代码隐藏和标记)
- 正在尝试
ScriptManager
上可用的一些其他方法 - 使用jQuery
$(document).ready()
但在所有情况下,只有在加载/重新加载页面时才会执行脚本。唯一有效的破解是在每次PostBack后调用pageLoad()
函数内部的函数。
我建议您在updatePanel中包含用户控件,并在updatePanel加载事件中添加ScriptManager.RegisterStartUpScript:
<asp:UpdatePanel runat="server" ID="UpdatePanel1"
OnLoad="UpdatePanel1_Load">
c#
protected void UpdatePanel1_Load(object sender, EventArgs e)
{
//your code to fire the javascript
}
您可以尝试服务器端:ClientScriptManager.RegisterClientScriptBlock()
和客户端:setTimeout()
例如:
protected void Page_Load(object sender, EventArgs e)
{
Page page = (Page)HttpContext.Current.CurrentHandler;
string script = "<script type='"text/javascript'">setTimeout(function(){alert("Hello World")},3000);</script>";
if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("alert"))
{
page.ClientScript.RegisterClientScriptBlock(typeof(PageFunctions), "alert", script);
}
}
这将在page_load上注册一个脚本块,3秒后将显示警报。请参阅有关setTimeout@Window setTimeout()方法的更多信息
相关文章:
- 没有找到相关文章