用于动态控制的JQuery部分回发不起作用

时间:2012-10-24 01:07:24

标签: jquery asp.net dynamic-controls partial-postback

我正在使用Eric Hynds’ jQuery作为多选列表。我已经在后面的代码中动态创建了控件,并且可以成功绑定到它。

源代码如下:

<div class="multiselectlist">
  <select id="MainContent_List" multiple="multiple" name="ctl00$MainContent$List">
</div>

动态控件位于更新面板中。当我点击一个按钮时,它会进行部分回发,并且会丢失与之关联的jQuery功能。

我认为我需要“重新注册脚本”所以我这样做了:

ScriptManager.RegisterClientScriptInclude(this, GetType(), "multiselect", Page.ResolveClientUrl("../../Assets/Scripts/jquery.multiselect.min.js"));

不幸的是没有任何反应。我很确定这是没有运行的JavaScript。我没有正确注册javascript吗?

2 个答案:

答案 0 :(得分:1)

尝试重新初始化多选列表,如下所示

$.ajaxStop(function(){
    $("#MainContent_List").multiselect();
});

答案 1 :(得分:0)

如果我的理解是正确的,您只需要将JQuery Multiselect重新绑定到select控件。

这是因为每次发布部分帖子时都会重新呈现UpdatePanel的内容,这意味着每个帖子都会删除并重新创建DOM元素

为了实现目标,只需重新绑定事件,如下所示:

Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(function (a, e) {
     // place here the re-initialization of your multiselect plugin
});

此外,您可以使用shortcut功能:

function pageLoad() {
    // place here the re-initialization of your multiselect plugin
}