У меня есть следующая иерархия
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.
Может кто-нибудь помочь?
Спасибо
Саиф