1

我们有一个由多个用户控件组成的 asp.net 页面,其中许多控件的visible属性设置为false. 通过选择单选按钮,通过在代码隐藏中设置visible属性来显示用户控件之一。true发生这种情况时,我们希望运行一个 JavaScript 函数。该脚本已使用页面ScriptManager.RegisterStartUpScriptPage_Load方法注册。

我们怎样才能使这项工作?

我们尝试过的事情:

  • 在用户控件中注册脚本(代码隐藏和标记)
  • 尝试一些其他可用的方法ScriptManager
  • 使用 jQuery$(document).ready()

但在所有情况下,脚本仅在页面加载/重新加载时执行。唯一可行的方法是在函数内部调用函数,因为在每次 PostBack 之后都会调用该函数pageLoad()

4

2 回答 2

0

您可以尝试服务器端: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() 方法的更多信息

于 2012-08-20T19:43:21.690 回答
0

我建议您将用户控件包含在 updatePanel 中,并将您的 ScriptManager.RegisterStartUpScript 添加到 updatePanel 加载事件中:

<asp:UpdatePanel runat="server" ID="UpdatePanel1" 
OnLoad="UpdatePanel1_Load">

C#

protected void UpdatePanel1_Load(object sender, EventArgs e)
{
  //your code to fire the javascript
}
于 2012-08-20T16:29:38.260 回答