我们创建了一个UserControl。在用户控制内部,我们正在创建一个更新面板在面板内部,我们创建了各种控件,如TextBox,Button,DropDownList和ListBox以及与它们相关的事件buttonclick(),DropDown_selectedIndexChanged(),TextBox_TextChenged()等。所有控件(包括更新面板)都是使用c#以编程方式创建的。 为了解决我们使用ScriptManager的事件。
ScriptManager以编程方式添加OnInit函数,如下所示:
ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);
if (scriptManager == null)
{
scriptManager = new ScriptManager();
//scriptManager.EnablePartialRendering = true;
this.Controls.AddAt(0,scriptManager);
}
每次页面加载后,只有一个事件被触发部分回发(这是所需的),但之后没有事件被触发。
所有有效的更改都已在AJAX的web.config文件中完成。 请提出问题的可能原因和解决方案。
答案 0 :(得分:0)
在部分回发时,不会添加ScriptManager,因为您尝试将其添加到UpdatePanel之外(必须在哪里)。这适用于第一页加载,因为它不是部分回发。但是在部分回发之后,动态添加的ScriptManager将无法用于页面,并且因为您尝试将其添加到UpdatePanel之外 - AddAt(0,...)
- 在部分回发之后,它实际上不会被添加。在部分回发上,您只能影响启动回发的UpdatePanel内部的内容。
底线是,你真的无法动态添加ScriptManager,因为在部分回发后它永远不会存在。就像你在里面发生事件后,你无法动态地在UpdatePanel之外添加任何其他控件。