关于UserControl中的Ajax

时间:2010-12-14 11:02:15

标签: asp.net user-controls asp.net-ajax updatepanel

我们创建了一个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文件中完成。 请提出问题的可能原因和解决方案。

1 个答案:

答案 0 :(得分:0)

在部分回发时,不会添加ScriptManager,因为您尝试将其添加到UpdatePanel之外(必须在哪里)。这适用于第一页加载,因为它不是部分回发。但是在部分回发之后,动态添加的ScriptManager将无法用于页面,并且因为您尝试将其添加到UpdatePanel之外 - AddAt(0,...) - 在部分回发之后,它实际上不会被添加。在部分回发上,您只能影响启动回发的UpdatePanel内部的内容。

底线是,你真的无法动态添加ScriptManager,因为在部分回发后它永远不会存在。就像你在里面发生事件后,你无法动态地在UpdatePanel之外添加任何其他控件。