2012-01-19 7 views
1

SharePointのページからScriptmanagerを削除してAjaxツールキットと交換できるようにしようとしています。私は次のコードを使用する場合しかし、私が取得:追加ステートメントのC#経由でSharePointページからScriptManagerを削除する方法

Only one instance of a ScriptManager can be added to the page

コードエラー。これは、マスターページソースを変更するためのアクセスはオプションではないため、コード経由で行う必要があります。

のScriptManagerを交換する必要が私のWebパーツからコード:

protected void GroupCalenderSourceControl_Init(object sender, EventArgs e) 
    { 
     //throw new NotImplementedException(); 
     ScriptManager sm = ScriptManager.GetCurrent(Page); 

     if (sm == null) 
     { 
      Page.Controls.Add(new AjaxControlToolkit.ToolkitScriptManager()); 
     } 
     else 
     { 
      if (!(sm is AjaxControlToolkit.ToolkitScriptManager)) 
      { 
       Page.Controls.Remove(Page.FindControl(sm.ID)); 
       Page.Master.Controls.Remove(Page.FindControl(sm.ID)); 
       sm = null; 
       Page.Controls.Add(new AjaxControlToolkit.ToolkitScriptManager()); 
      } 
     } 
    } 
+0

マークアップでスワップできませんか? –

+0

残念ながら、このWebパーツはいくつかのファームで使用され、ソースページのマークアップにアクセスすることはできません。 – Darushin

答えて

0

主な問題は、ページが完全に元のスクリプトマネージャの登録を解除するために、ポストバックを完了する必要があるということです。同じコードブロックで実行することはあまりうまく機能しません。

しかし、このテーマを読んでいると、AJAX Control Toolkitコントロールは標準のASP.NET ScriptManagerで完璧に動作するようです。代わりにそれに固執することはできますか? ToolkitScriptManagerながら

は、それがのScriptManagerがToolkitScriptManagerほど速くその要求を実行します行動JSスクリプトをレンダリングする方法を具体的ににScriptManagerの行動の一部を改善するためのものです

出典:http://blog.turlov.com/2008/05/scriptmanager-vs-toolkitscriptmanager.html

0

このコードを試してみてください

foreach (Control ctr in Page.Form.Controls) 
     { 
      if (ctr.GetType() == typeof(System.Web.UI.ScriptManager)) 
      { 
       Page.Form.Controls.Remove(ctr); 
       break; 
      } 
     } 
    if (ScriptManager.GetCurrent(this.Page) == null) 
     { 
      ScriptManager scriptManager = new ScriptManager(); 
      scriptManager .ID = "scriptManager" + RandomNo; 
      Page.Form.Controls.AddAt(0, scriptManager); 
     } 
関連する問題