我有以下层次结构
页 - > Usercontrol1 with(asp:UpdatePanel& asp:Timer) ---> Usercontrol2 with(asp:UpdatePanel)with grid
在页面加载中我正在加载usercontrol1,然后usercontrol1加载usercontrol2。
我收到以下错误: -
“无法取消注册带有ID'UpdatePanel1'的UpdatePanel,因为它没有在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中删除更新面板,这可以正常工作......但需要在usercontrol2中回复ajax。
有人可以帮忙吗?
由于 赛义夫