Как удалить ScriptManager со страницы SharePoint через C # - PullRequest
1 голос
/ 19 января 2012

Я пытаюсь удалить Scriptmanager со страницы SharePoint в коде, чтобы я мог поменять его с помощью инструментария Ajax.Однако, когда я использую следующий код, я получаю:

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

Ошибки кода в операторе Add.Это должно быть сделано с помощью кода, поскольку доступ к изменению источника главной страницы невозможен.

Код из моей веб-части, который должен заменить скрипт-менеджер:

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

Ответы [ 2 ]

0 голосов
/ 24 января 2012

Попробуйте с этим кодом

  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 );
         }
0 голосов
/ 22 января 2012

Основная проблема заключается в том, что страница должна завершить постбэк, чтобы полностью отменить регистрацию исходного менеджера скриптов. Выполнение этого в одном и том же блоке кода не будет работать слишком хорошо.

Однако, прочитав эту тему, кажется, что элементы управления AJAX Control Toolkit прекрасно работают со стандартным ASP.NET ScriptManager. Разве вы не можете придерживаться этого вместо

Хотя ToolkitScriptManager предназначен для улучшения некоторых поведений ScriptManager, в частности того, как он отображает поведение JS-скриптов, ScriptManager будет выполнять свои запросы так же быстро, как ToolkitScriptManager

Источник: http://blog.turlov.com/2008/05/scriptmanager-vs-toolkitscriptmanager.html

...