使用RadAjaxManager更新UserControl外部的控件

时间:2013-01-27 14:25:35

标签: asp.net ajax telerik

我有一个由RadToolTipManager显示的选择对话框。该对话框由一些输入,一个RadGrid和一个用户控件中的按钮组成。当用户单击该按钮时,将关闭选择对话框。按钮后面的代码正在工作,信息通过事件处理程序传递回页面。但是,页面不会使用新数据刷新其控件。

我确定RadToolTipManager需要使用Ajax调用,我将RadAjaxManager添加到页面,将RadAjaxManagerProxy添加到User Control。但我不知道如何让用户控件中的按钮启动对页面控件的Ajax请求。

根据我的研究,我需要为页面启动AjaxRequest或__doPostBack。后者很好,实际上整个页面都需要更新。

我只是没有使用javascript /客户端编程的经验。我是否将其附加到用户控件中的Button?似乎会在后面的代码之前触发客户端脚本。后面的代码是将数据加载到需要更新的控件中的代码。而且我不知道如何获取eventTarget参数的页面名称(或页面上的面板)。

感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

在一个回发中有一种更简单的方法可以做到这一点,没有任何JavaScritp。

让我们说Panel1是您在单击用户控件中的按钮时要更新的容器。

将Panel1包裹在

<asp:UpdatePanel runat="server" id="up1" UpdateMode="Conditional">
<ContentTemplate>
<asp:Panel id="Panel1" runat="server"></asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>

在代码隐藏调用中,它的Update()方法(在你的按钮已经调用的处理程序中)。对要更新的所有单独容器重复此操作。这就是AJAX的工作方式:)。

答案 1 :(得分:0)

在您的用户控件代码隐藏中,您可以尝试添加以下属性:

public string ButtonID {
  get { return ButtonControl.ClientID; }
}

并可编程地将条目添加到RadAjaxManager。不确定这是否有效;解决方法是将所有内容包装在RadAjaxPanel中。

答案 2 :(得分:0)

我确实得到了Telerik支持的帮助。我的RadAjaxManager更新不正确。通过RadToolTip通过RadAjaxManager触发更新,我能够完成所需的工作。

那就是说,这是一个非常“Telerik”的解决方案。我更喜欢只在真正改进设计的地方使用第三方库。 rdmptn的解决方案更通用,所以给他点头。