UpdatePanel错误 - 无法搞清楚

时间:2009-11-23 02:03:57

标签: asp.net updatepanel postback

我在加载到Shadowbox弹出窗口的页面的代码隐藏中调用它:

        ScriptManager.RegisterStartupScript(this, this.GetType(),
           "CloseScript", "parent.closeServiceOption();", true);

我知道正在调用Javascript函数,因为弹出了Alert()框,我可以逐步浏览IE Developer Toolbar中的代码。

        function closeServiceOption() {
          Shadowbox.close();
          alert("updating");
          __doPostBack('<% =upGrid.ClientID %>', '');
        return true;

upGrid是父页面上的asp:UpdatePanel:

       <asp:UpdatePanel ID="upGrid" runat="server" UpdateMode="Conditional" 
       EnableViewState="true">

这个技巧适用于其他几个页面,但不是我刚写的那个,我无法弄清楚原因。

这是IE给我看的错误:

  Object doesn't support this property or method  ScriptResource.axd?
  d=mnUf4WG8LrLFogIwzhvkGVdo-KPzLIFFBfGx6AcICRfPeY_Du0eoxLRaVGrqyoAqxR8l67
  1VS6MZAdxdawuxsyoM3wpGxwL83KwO7UehZus1&t=ffffffffec2d9970,
  line 4723 character 21

第4723行是Sys $ Net $ XMLHttpExecutor函数中的finally()子句:

  finally {
      if (_this._xmlHttpRequest != null) {
          _this._xmlHttpRequest.onreadystatechange = Function.emptyMethod;
          _this._xmlHttpRequest = null;
       }
  }

2行后,当我在调试器中检查它时,我得到“权限被拒绝”,并且xmlHttpRequest的所有其他属性都被“拒绝访问”。 再次,我在其工作的几个其他页面上使用此技巧(在客户端上调用__doPostBack)。 UpdatePanel具有相同的属性(具体来说,ViewState已启用,并且禁用它不能解决问题),并且我在此页面上看不到任何其他不同的内容,但必须存在我遗漏的内容。有什么想法吗?

Firefox / Firebug,顺便说一句,根本没有显示任何错误,但UpdatePanel也没有回发。

2 个答案:

答案 0 :(得分:0)

我不会手动触发__doPostBack,而是在您的UpdatePanel上调用Update方法。

function closeServiceOption() {
    Shadowbox.close();
    alert("updating");
    var upGrid = document.getElementById("upGrid");
    upGrid.update();
    return true;
}

答案 1 :(得分:0)

Microsoft应该考虑并解决这些问题。

UpdatePanel使用部分渲染。试试UpdateMode="Conditional" ChildrenAsTriggers="true">

Control并不保持RegisterClient Side所需的状态。

第二

Dim cs As ClientScriptManager = Page.ClientScript
  cs.RegisterClientScriptBlock(Me.GetType(), ControlNAme.ClientID, "<script>" & vbCr & vbLf & "window.ControlNAme='" + ControlNAme.ClientID + "';" & vbCr & vbLf & "</" + "script>")

第三。尝试使用ICallbackEventHandler接口来避免回发导致松开控件状态并且Javascript开始烦扰你。