2009-11-23 113 views
1

我在加载到太极拳弹出页面的代码隐藏调用此:UpdatePanel的错误 - 无法弄清楚

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

我知道,JavaScript函数被调用,因为得到警报()框弹出,我可以浏览IE开发工具栏中的代码。

 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 $网$ XMLHttpExecutor函数的最后()子句:

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

2线以后,我“权限被拒绝“,并且当我在调试器中检查它们时,xmlHttpRequest的所有其他属性的”访问被拒绝“。 同样,我使用这个技巧(在客户端调用__doPostBack)在其他几个网页上工作。 UpdatePanel具有相同的属性(具体来说,ViewState已启用,禁用它并不能解决问题),并且我没有在此页面上看到其他任何不同的内容,但是肯定会丢失一些东西。有任何想法吗?

Firefox/Firebug,btw,根本不会显示任何错误,但是UpdatePanel也不会回发。

+0

通过回复,你想要做什么?你只是想更新内容? – 2009-11-23 02:13:36

+0

是 - 弹出页面向此页面的Gridview添加了一行。 – cdonner 2009-11-23 02:27:38

回答

0

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

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

你确定有一个update()方法吗?我使用AjaxToolkit,但没有像这样的自定义扩展http://daron.yondem.com/CommentView.aspx?guid=52b9bf2e-bf76-439d-8a5f-e9b1c70ce9e2 – cdonner 2009-11-23 02:56:54

+0

这不是一个自定义扩展。它是UpdatePanel本身的一部分。我之前使用过它,并且我创建了一个成功使用它的示例项目。 – 2009-11-23 03:04:38

0

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

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

控制不保持它的状态它需要RegisterClient端。

2nd。

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

3rd。尝试使用ICallbackEventHandler接口来避免回发,从而导致控制状态和Javascript开始萦绕你的状态。