首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用户控件中的RadAjaxManager,每个页面最多有一个这样的管理器。

用户控件中的RadAjaxManager,每个页面最多有一个这样的管理器。
EN

Stack Overflow用户
提问于 2015-04-29 09:58:25
回答 1查看 1.8K关注 0票数 0

如果尝试将RadAjaxManager添加到页面两次,这是一个众所周知的错误:

只能将一个RadAjaxManager实例添加到页面中。

如何用代理控件解决设计时问题的Telerik解释

对于我们在页面上使用的大多数控件来说,即使每个控件上都有一个RadAjaxManager,有时甚至在中继器内(偶然,但仍然不会抛出错误),这个错误也不会触发。但是,对于一个这样的控件(一个动态按钮),我们已经将其添加到页面上的几个位置,没有问题,这可能是因为这是相同的控件,但是嵌套在另一个控件中,一旦我们将它添加到页面中,我们就会再次收到上面的错误。

我试图通过以下方式解决这个问题:

  • 动态添加控件到页面,但由于控制事件在页面事件之前触发,这将导致某些动态行为不再发生。
  • 只向控件动态添加一次RadAjaxManager,并进行内置的额外检查,如下所示: 私有RadAjaxManager GetAjaxManager() { var ctl = this.FindControl("ajaxManager");if (ctl !=空){返回(RadAjaxManager)ctl;}/替代方法var mgr = RadAjaxManager.GetCurrent(this.Page);if (mgr = null) {返回mgr;} //控件永远返回空返回空;}保护覆盖无效OnInit(EventArgs e) { if (this.GetAjaxManager() == null) { // ajax从未找到,这总是引发//“无法多次添加”错误var ajaxManager =新RadAjaxManager();ajaxManager.ID = "ajaxManager";this.Controls.Add(ajaxManager);}}
代码语言:javascript
复制
- Several variants of the above

其结果要么是:从未找到该控件,并因此多次添加该控件,从而导致上述错误,要么该控件在进程中被添加,但对于user控件中的其他控件来说太晚了,导致几个AJAX事件没有发生。

我应该如何将RadAjaxManager添加到其他几个用户控件内部使用的用户控件中,以便管理器只在页面上发生一次并且/或使RadAjaxManager.GetCurrent实际工作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-29 14:39:08

平面A-将RadAjaxManager添加到页面级别,而不是添加到用户控件。因此,用户控件可以具有RadAjaxManagerProxy控件,静态GetCurrent()方法将工作。

计划B-如果您想要自包含的用户控件,请使用RadAjaxPanel控件。它们有一个ajaxRequest()客户端方法和一个服务器端事件,而且由于用户控件通常很小,您很可能可以为它们提供一个面板。

计划C-将AJAX设置留给父页面。如果父用户控件已经启用AJAX,则其全部内容将随回发一起传播,因此在内部用户控件上嵌套更多的AJAX设置可能不会给您带来性能好处。

计划D-只使用asp:UpdatePanel控件和UpdateMode=Conditional,所以您将有非常细粒度的控制您的部分呈现。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29940318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档