如何通过C#从SharePoint页面中删除ScriptManager

本文关键字:删除 ScriptManager SharePoint 何通过 | 更新日期: 2023-09-27 18:20:44

我正试图用代码从SharePoint页面中删除Scriptmanager,以便可以将其与Ajax工具包进行交换。然而,当我使用以下代码时,我会得到:

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

Add语句上的代码错误。这必须通过代码来完成,因为访问修改母版页源代码不是一种选择。

需要替换脚本管理器的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());
            }
        }
    }

如何通过C#从SharePoint页面中删除ScriptManager

主要问题是页面需要完成postback才能完全注销原始脚本管理器。在同一个代码块中执行操作不会太好。

然而,在阅读了这个主题之后,AJAX控件工具包控件似乎可以很好地与标准的ASP.NET ScriptManager配合使用。你能不坚持吗?

虽然ToolkitScriptManager旨在改善ScriptManager的一些行为,特别是它呈现行为的方式JS脚本ScriptManager将以与ToolkitSScriptManager 一样快的速度执行其请求

来源:http://blog.turlov.com/2008/05/scriptmanager-vs-toolkitscriptmanager.html

尝试使用此代码

  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 );
         }