0

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

现在我尝试了很多解决方案,包括这个问题中提到的解决方案 如何在更新面板回发后执行 javascript 回调? 但徒劳无功。以前,当我的页面只包含一个更新面板时,

pageLoad(sender, Args);

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

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

function pageLoaded() { }
4

1 回答 1

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 函数的方法是使用服务器端代码。每次您的控件加载或执行一些服务器端初始化时 - 使用ClientScript.RegisterStartupscriptcall 以确保之后将在客户端调用 JS 函数,例如

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

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

于 2013-05-13T13:13:28.737 回答