【问题标题】:jquery with update panel带有更新面板的 jquery
【发布时间】:2011-03-25 06:49:07
【问题描述】:

我在使用 jquery 上下文菜单和更新面板时遇到问题。我正在使用 htmlTextWriter 在 Customtextbox 控件的 RenderBeginTag 中编写上下文菜单的 javascript。一切正常,我可以右键单击每个文本框并出现菜单。
但是当我使用 asp.net 更新面板触发部分回发时,菜单将不会显示。当部分回发发生时,jquery 和 html 之间的绑定似乎丢失了。
除了在 RenderBeginTag 之外,还有没有更好的方法来放置动态 javascript 代码?我该如何解决这个问题?

【问题讨论】:

    标签: c# javascript asp.net jquery updatepanel


    【解决方案1】:

    你说得对,更新面板会删除你的 javascript 绑定。

    在您的更新面板回发中,重新注册有问题的 javascript。

    类似:

    ClientScriptManager cs = Page.ClientScript;
    cs.RegisterStartupScript(typeof(Page), "ReApplyJavascript", "<script type=text/JavaScript>YourJavascriptInitMethod();</script>", false);
    

    如果这不起作用。您可能需要使用:

       ScriptManager.RegisterStartupScript(Page, typeof(Page), "ReApplyJavascript", "<script type=text/JavaScript>YourJavascriptInitMethod();</script>", false);
    

    【讨论】:

    • 我都试过了,但都没有用。我将脚本放在服装控件的 RenderBeginTag 中。这是正确的地方吗?
    • 不幸的是,我对自定义控件不太熟悉。我通常在不在控件中的页面后面的代码上使用此代码。当您的更新面板执行部分回发时,RenderBeginTag 是否会触发?
    • 实际上,我不会使用 RenderBeingTag 注册任何脚本。每次呈现控件时,我都会使用其中一种 RegisterStartUpScript 方法将它们全部注册。
    【解决方案2】:

    UpdatePanel 更新后需要重新初始化菜单。

    <script type="text/javascript"> 
    var prm = Sys.WebForms.PageRequestManager.getInstance();    
    prm.add_initializeRequest(InitializeRequest);
    prm.add_endRequest(EndRequest);
    
    function InitializeRequest(sender, args) {      
    }
    
    function EndRequest(sender, args) {
         // Here initialize the menou
    }
    </script>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-23
      • 2010-09-17
      • 1970-01-01
      • 2010-12-23
      • 1970-01-01
      • 2011-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多