在ASP.Net中,我有一些自定义控件。我利用了jQuery也帮助了它。好吧,我现在遇到的一个问题(显而易见的,但是“坏”的解决方法)是,对于每个用户控件,我需要从pageLoad
内执行一些代码($(document).ready
将无法使用更新面板)。
那么现在我的问题。我需要将两个自定义控件附加到pageLoad
事件。
这样做的最佳方式是什么?
我不能只做
old_pageLoad=pageLoad
pageLoad=function(){... old_pageLoad();}
因为这些自定义控件可以在页面上多次使用,并且脚本需要为控件的每个实例运行,如果我在页面上有3个不同的自定义控件,该怎么办?
我提出的唯一方法就是这样看似超级hackish:
old_pageLoad_<%= MyStaticClass.GetUniqueID() %>=pageLoad;
pageLoad=function(){... old_pageLoad_<%= MyStaticClass.GetUniqueID() %>();}
有没有更好的方法来处理这样的功能冲突?
我也看过this MSDN article,但它的建议对我来说比我目前所做的更糟糕。
答案 0 :(得分:1)
使用ScriptManager
的{{3}}方法。在注册脚本时传入对控件的引用,这可确保在更新控件时(无论是在第一页加载时还是在更新UpdatePanel时)都运行初始化脚本。
答案 1 :(得分:0)
另一种方法是添加一个在异步回发结束时调用Javascript方法的处理程序。我已经多次这样做了重新初始化jQuery对话框。 E.g。
$().ready(function() {
myInitMethod();
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(myInitMethod);
});
function myInitMethod() }
// Init code
}