jQuery UpdatePanels初始化

时间:2012-11-06 21:51:00

标签: jquery asp.net updatepanel

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

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

我尝试过“add_endRequest”解决方案

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

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

我已经阅读了“.live()”方法,但我不明白如何将其用于初始化。对于像“鼠标悬停”这样的事件,我看到它是如何使用的,而且非常简单......但是,对于inits,我没有得到它。

我目前的启动线是:

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

遵循“鼠标悬停”例子,但我无法弄清楚要连接哪个事件,因为文档没有列出任何类似“加载”的内容。如果确实如此,我会用这样的东西......

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

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

2 个答案:

答案 0 :(得分:0)

.live()已弃用,请尝试使用jQuery的.on()方法:

$(document).on("change", $('.GridViewStyle'), function() {
    $(this).colResizable({ liveDrag: true });
});

此外,您可能希望在初始化程序中设置postbackSafe: true以在回发期间保持列宽更改。

答案 1 :(得分:0)

您可以使用pageLoaded的{​​{1}}事件代替PageRequestManager。看看这个事件文档:

  

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

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

endRequest

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