使用asp:UpdatePanel后,vb.net codebehind不会调用javascript

时间:2012-07-12 21:10:56

标签: c# asp.net .net vb.net

.net问题

我有asp:LinkButton,点击后会点击后面的代码,创建会话并调用javascript函数打开带PDF文档的新标签

这是按钮:

 <asp:LinkButton runat="server" CssClass="lnkBtn" ID="btnViewPDF" >
 <img alt="" src="External_Files/images/view_pdf_icon.png" />
  <span>View PDF</span></asp:LinkButton>
代码背后的代码:

      Protected Sub btnViewPDF_Click(sender As Object, e As System.EventArgs)
       Handles btnViewPDF.Click

    Session("mina") = hfChartImg.Value
    Page.ClientScript.RegisterStartupScript(Me.GetType(), "_viewPDF", 
       "changeUrl();",     True)
     End Sub

这是使用pdf

打开新标签的js函数
  function changeUrl(){

      var url = 'CIP_frmCIPEventExplorePdf.aspx?ViewPDF=1&intCIPEventID=' + 
      $('#intCIPEventID').val();
       parent.showNewTab(url, 'CIP Chart - PDF', 'CIP');

     }

此代码工作正常,直到我不得不用来包装我的页面内容 asp:ScriptManager and asp:UpdatePanel

这是我的代码现在的样子

  <body class="frame_content">
          <form id="CIP_frmCIPEventExplore" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server"
              EnablePartialRendering="true"></asp:ScriptManager>
       <asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <div class="dataview_title" >
          ..............................
            ..........................

       </asp:Panel>
        </ContentTemplate>
            </asp:UpdatePanel>  
       </form>

       </body>

问题 当我在session行放置一个断点时,代码不再调用javascript函数,它会点击该行,然后END SUB 请问有谁请问我的问题在哪里?

2 个答案:

答案 0 :(得分:0)

试试这个..我遇到了类似的问题,使用RegisterStartupScript()无效。以下对我有用:

<form id="CIP_frmCIPEventExplore" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" />
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>   
           ...
        </ContentTemplate>
    </asp:UpdatePanel>
</form>
<script type="text/javascript">
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_endRequest(function (s, e) {
        changeUrl();
    });
</script>

请参阅: Run javascript function after Postback

答案 1 :(得分:0)

这是一个相当常见的问题,你必须使用由scripmanger提供的新方法 所以在你的代码而不是这个

Page.ClientScript.RegisterStartupScript

你必须使用

ScriptManager.RegisterClientScriptBlock

看看这个

http://msdn.microsoft.com/en-us/library/bb350750.aspx