Skip to main content
 首页 » 编程设计

jQuery UpdatePanel 初始化

2026年10月07日3shihaiming

我目前正在尝试对位于 AJAX UpdatePanel 内的 GridView 使用“colResizable”。第一次加载时,它运行良好,但每当 UpdatePanel 更新时,它就会停止。

我知道这是由面板的完全刷新引起的,这意味着初始化添加的所有内容都不会添加回来。

我尝试过“add_endRequest”解决方案

var prm = Sys.WebForms.PageRequestManager.getInstance();  
prm.add_endRequest(function() {  
    $(".GridViewStyle").colResizable({ liveDrag: true });  
} 

但是,它被调用得太早并且不能解决我的问题。

我已经阅读了有关“.live()”方法的信息,但我不明白如何使用它进行初始化。对于像“mouseover”这样的事件,我了解它是如何使用的,而且非常简单......但是,对于 inits,我不明白。

我当前的初始化行是:

$(document).ready(function () { 
    $(".GridViewStyle").colResizable({ liveDrag: true }); 
}); 

按照“鼠标悬停”示例,但我无法弄清楚要连接到哪个事件,因为文档没有列出“加载”之类的内容。如果是的话,我会使用这样的东西......

$(".GridViewStyle").live("load", function () { $(".GridViewStyle").colResizable({ liveDrag: true }); }); 

我四处搜寻,但没有找到适合我需求的东西。我对 jQuery 还很陌生,所以我可能没有使用正确的词汇/概念。

请您参考如下方法:

您可以使用 PageRequestManager 的 pageLoaded 事件来代替 endRequest。查看此事件文档:

Raised after all content on the page is refreshed as a result of either a synchronous or an asynchronous postback.

此外,在此事件处理程序中,仅当 GridView 控件所在的 UpdatePanel 创建或更新时,您才可以应用 colResizing 插件。这使您可以避免每个异步回发上的冗余插件初始化调用,这些调用可能由其他一些 UpdatePanel 中的控件引发

Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(initializeResizeable); 
 
function initializeResizeable(sender, args) { 
    var context = $(args.get_panelsCreated()).add(args.get_panelsUpdated()); 
    $(".GridViewStyle", context).colResizable({ liveDrag: true });  
} 

此外,使用此脚本,您可以从 document.ready 处理程序中删除插件初始化,因为此脚本将在首页加载时以及每次异步回发时执行