如何在更新面板更新后运行Javascript

时间:2011-08-23 06:00:29

标签: .net asp.net asp.net-ajax updatepanel

我想了解在更新面板完成更新后如何运行客户端javascript给定各种约束。我的开发场景非常重要,但我想通过描述一个更简单的案例来说明问题。

我有一个包含更新面板的用户控件,其中包含一个按钮和一个表。当用户单击按钮时发生异步回发,表的行将被更改,并且更改的表将返回并在客户端上呈现。

我想运行一个脚本来对表执行一些自定义格式。让我们说现在我想斑马条纹表。 (实际要求更复杂)。

我以为我只是能够发出脚本作为用户控件输出的一部分,每当更新发生时,表标记和脚本将在客户端上处理,一切都会好的,但这种技术不起作用。

我见过其他引用ClientScriptManager的帖子,但在我的用户控件中似乎没有。我应该添加ScriptManagerProxy吗?

考虑到约束,那么最好的方法是什么。

  • 更新面板位于用户控件内。
  • 页面上可能有多个用户控件实例。

看起来我需要

  • 为每个用户控件实例生成唯一的更新脚本。
  • 找到一种“注册”每个脚本的方法
  • 找到一种方法,要求在相应的updatePanel完成更新时运行脚本。

我似乎已经看到很多例子很接近但没有一个符合我的情况;我无法弄清楚如何将它们全部挂在一起。

2 个答案:

答案 0 :(得分:1)

你必须为它编写EndRequestHandler。 这是一个非常常见的问题,Javascript,Jquery在更新面板的异步回发后停止工作。 在这个链接中,我已经解释了如何做到这一点。 http://codethatworkedforme.blogspot.com/2011/08/having-issues-with-update-panel.html

答案 1 :(得分:0)

  • 对于每个用户控件实例的唯一更新脚本,您可以尝试此

    function yourFunctionName<%= ClientID %>() {
       //do something
    }
    
  • 您可以使用此

    在服务器端的按钮客户端envent处理程序中调用客户端脚本
    protected void btn_click(object sende, EventArgs e) {
        ScriptManager.RegisterStartupScript(this, this.GetType(),
                Guid.NewGuid().ToString(),
                string.Format("yourFunctionName{0}();", ClientID),
                true);
    }