在页面上的每个updatepanels部分回发事件后调用函数

时间:2013-05-10 12:16:07

标签: javascript jquery asp.net updatepanel

我正在处理包含许多更新面板的网页上使用的自定义控件。在我的自定义控件中,广泛使用jquery,并且也使用了许多插件。现在,在每个updatepanel的回发,THE CONTROL GETS RENDERED AGAIN AND AGAIN,它也会再次加载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() { }

1 个答案:

答案 0 :(得分:1)

如果您不希望您的控件在每个UpdatePanel的回发上刷新 - 将UpdateMode的UpdatePanel设置为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功能的方法是从服务器端代码。每次控件加载或执行某些服务器端init时 - 使用ClientScript.RegisterStartupscript调用以确保之后将在客户端上调用JS函数,例如

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

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