2012-11-19 153 views
1

我遇到了以下一段代碼的麻煩。它在我的本地機器上運行得非常好,但是當我將它部署在開發服務器中時,它根本不起作用。我在很多地方搜索了一個解決方案,但沒有成功。ClientScript.RegisterStartupScript不能在服務器上工作

我有一個gridview,其中一列是buttonfield。此按鈕字段將打開一個彈出窗口,顯示所選銷售訂單的詳細信息。

爲了顯示我用下面的句子彈出:

private void OpenPopup(string name_) 
    { 
     Page.ClientScript.RegisterStartupScript(typeof(home), "Popup", string.Concat("<script type='text/javascript'>OpenPopup('", name_, "');</script>")); 
    } 

的OpenPopup()是一個簡單的顯示彈出一個JavaScript函數(我測試過它,它工作得很好,所以我不會展會不必要的代碼):

當的RegisterStartupScript在我的本地環境中執行它工作正常,並將結果在頁面的源代碼如下:

<script type='text/javascript'>OpenPopup('items');</script> 

現在,當我發佈網站並將其部署到服務器時,它根本不起作用。我已經嘗試使用Scriptmanager來工作,但結果相同;它在本地工作,但不在服務器中。

添加的腳本根本沒有被寫入。

我真的很喜歡任何形式的幫助。我已經搜索了很多方法,但對我來說沒有解決方案...

非常感謝。

/編輯:我不使用頁面中的updatepanel。

+0

您可以驗證的OpenPopup()服務器方式曾經叫什麼名字? –

+0

此外,這是您點擊按鈕時發生的唯一事情(例如,如果我們使按鈕打開彈出窗口而不會發布到服務器,這會更好嗎?) –

回答

0

您是否嘗試過使用.RegisterClientScriptBlock?這是我總是用來在代碼隱藏中調用JS的。

你可以試試類似下面的代碼嗎?

protected void btnSubmit_Click(object sender, EventArgs e) 
{ 
    Boolean dne = false; 
    StringBuilder errorMessage = new StringBuilder(); 
    String scriptName = ""; 



    if (AdminAccess.DoesUserExist(txtUsername.Text)) 
    { 
     errorMessage.Append("alert('The selected username " + txtUsername.Text + " is already in use. Please choose another. ');"); 
     scriptName = "duplicateUsername"; 
     if (!ClientScript.IsClientScriptBlockRegistered(scriptName)) 
     { 
      ScriptManager.RegisterClientScriptBlock(this, this.GetType(), scriptName, errorMessage.ToString(), true); 
     } 
     dne = true; 
    } 

}

+0

你好。這不起作用,因爲RegisterClientScriptBlock在創建其他控件之前使JavaScript調用執行。 RegisterStartupScript將調用放在代碼的底部,這是正確的,在我的本地環境中工作正常。我真的不知道爲什麼會發生這種情況。我認爲這與服務器本地環境相比,在服務器上應該有所不同。 – Javier

+0

您在事件處理程序中創建了哪些其他控件? – tuckerjt07

+0

我正在使用在此調用之前隱藏並填充的gridview。在gridview填充後,我試圖調用這個函數來彈出這個gridview。 – Javier

相關問題