jQuery UpdatePanels初始化

Car*_*ion 5 asp.net jquery updatepanel

我目前正在尝试将"colResizable"用于位于AJAX UpdatePanel内的GridView.在第一次加载时,它运行良好,但每当UpdatePanel更新时,它都会停止.

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

我尝试过"add_endRequest"解决方案

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

但是,它过早被调用,并没有解决我的问题.

我已经阅读了".live()"方法,但我不明白我如何使用它进行初始化.对于像"鼠标悬停"这样的事件,我看到它是如何使用的并且非常简单......但是,对于inits,我不明白.

我目前的启动线是:

$(document).ready(function () {
    $(".GridViewStyle").colResizable({ liveDrag: true });
});
Run Code Online (Sandbox Code Playgroud)

以"鼠标悬停"为例,但我无法弄清楚要连接哪个事件,因为文档没有列出任何类似"加载"的内容.如果是的话,我会用这样的东西......

$(".GridViewStyle").live("load", function () { $(".GridViewStyle").colResizable({ liveDrag: true }); });
Run Code Online (Sandbox Code Playgroud)

我四处寻找,但没有找到适合我需要的东西.我是jQuery的新手,所以我可能没有使用正确的词汇/概念.

Yur*_*kiy 0

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

由于同步或异步回发而刷新页面上的所有内容后引发。

另外,在此事件处理程序中,仅当 GridView 控件所在的 UpdatePanel 创建或更新时,您才可以应用 colRessized 插件。这使您可以避免每个异步回发上的冗余插件初始化调用,这些调用可能由其他一些 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 }); 
}
Run Code Online (Sandbox Code Playgroud)

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