2009-11-23 134 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開始縈繞你的狀態。