2010-12-14 76 views
0

我們已經創建了一個UserControl。在用戶控制內部,我們正在創建更新面板。在面板內部,我們創建了各種控件,如TextBox,Button,DropDownList和ListBox以及與它們相關的事件buttonclick(),DropDown_selectedIndexChanged(),TextBox_TextChenged()等等。所有控件(包括更新面板)都是用c#編程創建的。 爲了使我們使用ScriptManager的事件變得簡單。關於UserControl中的Ajax

的OnInit上的功能被添加的ScriptManager編程就像如圖所示:

ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page); 
      if (scriptManager == null) 
      { 
       scriptManager = new ScriptManager(); 
       //scriptManager.EnablePartialRendering = true; 
       this.Controls.AddAt(0,scriptManager); 
      } 

頁面加載僅一次事件之後每當被解僱部分回發(這是需要的),但之後沒有事件被炒魷魚。

所有有效的更改都已在web.config文件中爲AJAX完成。 請提出可能的原因和問題的解決方案。

+0

您是否收到任何錯誤消息? – 2010-12-14 11:11:28

+0

沒有錯誤消息,包括任何JavaScript錯誤。 – Anoop 2010-12-14 11:12:52

回答

0

在部分回發上,ScriptManager將不會被添加,因爲您試圖將它添加到UpdatePanel之外(它必須在其中)。這適用於首頁加載,因爲它不是部分回傳。但是在部分回發之後,動態添加的ScriptManager將不可用於頁面,並且因爲您試圖在UpdatePanel之外添加它 - AddAt(0,...) - 在部分回發之後,它實際上不會被添加。在部分回發中,您只能影響啓動回發的UpdatePanel中的內容。底線是,你真的不能動態添加ScriptManager,因爲在部分回發之後,它永遠不會存在。就像你不能在UpdatePanel之外動態添加任何其他控件一樣。

+0

但同一個應用程序在具有相同配置的另一臺服務器上完美工作。 – Anoop 2010-12-14 14:23:50

+0

直觀地說,我認爲由初始頁面加載生成的所有腳本都不會與部分回發後UpdatePanel內生成的任何腳本正確鏈接,因爲它是由ScriptManager的不同實例生成的。我可能是錯的,但是,也許ScriptManager不是依賴於上下文的,但它似乎非常直截了當地認爲這種設計是可行的。無論如何,如果它在具有完全相同配置的另一臺服務器上工作......那麼我會說配置可能不完全相同。 – 2010-12-14 15:00:10

+0

您是否看到此線程?這可能有多種方式。 http://stackoverflow.com/questions/183950/add-scriptmanager-to-page-programmatically – 2010-12-14 15:09:28