32 javascript asp.net ajax updatepanel
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler) 对我来说不起作用,因为这会在任何更新面板完成加载后触发,我找不到客户端方法来找到哪一个
ScriptManager.GetCurrent(Page).AsyncPostBackSourceElementID AsyncPostBackSourceElementID 不适合我,因为这是一个服务器端对象,我想要客户端
ClientSide .Net框架必须知道它正在更新哪个UpdatePanel才能更新正确的内容.当然有一种方法来吸引这个事件?
任何帮助,将不胜感激.
小智 48
谢谢 - 两个好的答案.我最后使用客户端脚本"pageloaded".这是一个相当埋没的方法,谷歌没有透露给我.对于那些感兴趣的人,这段代码与FireBug一起使用,可以很好地演示用于查找更新面板的PageLoaded方法:
<script type="text/javascript">
$(document).ready(function() {
panelsLoaded = 1;
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(PageLoaded)
});
function PageLoaded(sender, args) {
console.log("I have occured " + panelsLoaded++ + " times!");
var panelsCreated = args.get_panelsCreated();
for (var i = 0; i < panelsCreated.length; i++) {
console.log("Panels Updating: " + panelsCreated[i].id);
}
var panelsUpdated = args.get_panelsUpdated();
for (var i = 0; i < panelsUpdated.length; i++) {
console.log("Panels Updating: " + panelsUpdated[i].id);
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
Mar*_*ett 13
您可以挂钩PageRequestManager.beginRequest事件并检查BeginRequestEventArgs.postBackElement属性.
请注意,它并不真正为您提供UpdatePanel,而是UpdatePanel内部的控件.但这应该足够好了.
编辑:更好的是,PageRequestManager.pageLoaded事件为您提供了PageLoadedEventArgs.panelsUpdated(和panelsCreated)属性.