Контроль таймера AJAX для загрузки элемента управления каждые 5 секунд - PullRequest
1 голос
/ 25 июня 2010

У меня есть следующая иерархия

Page -> Usercontrol1 с (asp: UpdatePanel & asp: Timer) ---> Usercontrol2 с (asp: UpdatePanel) с сеткой

При загрузке страницы я загружаю usercontrol1, затем usercontrol1 загружает usercontrol2.

Я получаю следующую ошибку: -

«Невозможно отменить регистрацию UpdatePanel с идентификатором« UpdatePanel1 », поскольку она не была зарегистрирована в ScriptManager. Это может произойти, если UpdatePanel был удален из дерева элементов управления и добавлен позже»

Теперь я попробовал с

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);
    this.UpdatePanel1.Unload += new EventHandler(UpdatePanel_Unload);
}


void UpdatePanel_Unload(object sender, EventArgs e)
{
    this.RegisterUpdatePanel(sender as UpdatePanel);
}



public void RegisterUpdatePanel(UpdatePanel panel)
{

    foreach (MethodInfo methodInfo in typeof(ScriptManager).GetMethods(BindingFlags.NonPublic | BindingFlags.Instance))
    {

        if (methodInfo.Name.Equals("System.Web.UI.IScriptManagerInternal.RegisterUpdatePanel"))
        {

            methodInfo.Invoke(ScriptManager.GetCurrent(Page), new object[] { panel });

        }

    }

После этого я получаю следующую ошибку: -

"Невозможно изменить коллекцию элементов управления на этапах DataBind, Init, Load, PreRender или Unload."

Если я удаляю панель обновления из usercontrol2, это работает нормально ... но мне нужно сообщение ajax обратно в usercontrol2.

Может кто-нибудь помочь?

Спасибо Саиф

...