【问题标题】:Call a function after every updatepanels partial postback event, on the page在页面上的每个 updatepanels 部分回发事件之后调用一个函数
【发布时间】:2013-05-05 03:00:22
【问题描述】:

我正在开发一个在包含许多更新面板的网页上使用的自定义控件。在我的自定义控件中,大量使用了 jquery,并且还使用了许多插件。现在,在每个更新面板的回发中,控件被一次又一次地渲染,它也再次加载 javascript 资源,但不再调用 javascript 函数。这导致了我的控件中的许多元素必须通过 jquery 插件转换为一件事或另一件事的问题(javascript 函数调用不简单)。

现在我尝试了很多解决方案,包括这个问题中提到的那些 How to have a javascript callback executed after an update panel postback? 但徒劳无功。以前,当我的页面只包含一个更新面板时,

pageLoad(sender, Args);

functon 工作正常,现在在多个更新面板不工作的情况下,也没有

var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_pageLoaded(pageLoaded);

function pageLoaded() { }

【问题讨论】:

  • 只是为了确认——当 UpdatePanel 刷新时——你需要调用一个 JavaScript 函数吗?
  • 是的,很抱歉回复晚了。由于我的国家有选举,我无法访问 stackoverflow。

标签: javascript jquery asp.net updatepanel


【解决方案1】:

如果您不希望您的控件在每个 UpdatePanel 的回发时刷新 - 将托管您的控件的 UpdatePanel 的 UpdateMode 设置为 Conditional 这样它只会在其自己的触发器或子控件触发时刷新(参考:http://msdn.microsoft.com/en-us/library/system.web.ui.updatepanel.updatemode(v=vs.90).aspx)。

也就是说,您不必在客户端手动添加 pageLoaded 事件处理程序。使用内部的 pageLoad 函数,该函数在每个页面加载时触发,无论是通过 UpdatePanel 还是其他方式(参考:http://msdn.microsoft.com/en-us/library/bb386417(v=vs.90).aspx

另一种触发 JS 函数的方法是从服务器端代码。每次您的控件加载或执行一些服务器端初始化时 - 使用 ClientScript.RegisterStartupscript 调用以确保之后将在客户端调用 JS 函数,例如

ClientScript.RegisterStartupscript(this.GetType(),"myFunc", "myFunction();", true);

参考:http://msdn.microsoft.com/en-us/library/z9h4dk8y(v=vs.90).aspx

【讨论】:

    猜你喜欢
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多