如何通过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());
}
}
}
主要问题是页面需要完成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 );
}