我目前正在尝试对位于 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 处理程序中删除插件初始化,因为此脚本将在首页加载时以及每次异步回发时执行
