2013-01-09 51 views
3

我面臨着很奇怪的問題。我嘗試了很多東西,但無法解決問題。這是場景。Scriptmanager不能在部分回發上工作只有在Firefox上

我有一個GridView 40個記錄。我正在註冊OnRowDataBound的劇本GridView的事件。我使用ScriptManager.RegisterStartupScript註冊。 GridView位於UpdatePanel之內,UpdatePanel在一分鐘後刷新。

第一次加載頁面時,我的腳本正常工作。但是在部分回發之後,它停止在Firefox上工作。它正在開發Chrome,IE,Safari和Opera。這只是Firefox正在創造問題。

我已經嘗試了很多可用的互聯網解決方案,但沒有爲我工作。此外,當頁面部分加載時,我不再註冊該腳本,因爲它已經被註冊。對於Firefox,我嘗試了在部分回發上註冊腳本,但沒有運氣。這是怎麼了註冊:

ScriptManager scriptManager = ScriptManager.GetCurrent(this); 
if (scriptManager != null && !scriptManager.IsInAsyncPostBack) 
{ 
        ScriptManager.RegisterStartupScript(this.UpdatePanel5, this.UpdatePanel5.GetType(), e.Row.RowIndex.ToString(), "<script language='javascript' type='text/javascript'>alert('Error Message');</script>", false); 
       // 
} 

我已經改變的RegisterStartupScript的最後一個參數爲真,並刪除腳本標記嘗試。

回答

0

刪除IsInAsyncPostBack檢查,也使您的腳本名稱更獨特。我也傾向於使用RegisterScriptBlock而不是這個偏好:

ScriptManager scriptManager = ScriptManager.GetCurrent(this); 
if (scriptManager != null) 
{ 
     ScriptManager.RegisterScriptBlock(this.UpdatePanel5 + DateTime.Now.Ticks.ToString(), this.UpdatePanel5.GetType(), e.Row.RowIndex.ToString(), "<script language='javascript' type='text/javascript'>alert('Error Message');</script>", false); 

} 
+0

如果我刪除IsInAsyncPostBack它會爲同樣的目的添加重複的腳本。它會混淆瀏覽器。我也嘗試過scriptname = guid和RegisterScriptBlock。沒有工作。 –