通过AJAX从另一个用户控件更新用户控件

时间:2010-07-10 19:03:21

标签: ajax user-controls telerik

也许我有一个大脑屁或什么东西,因为看起来这应该很简单,但你如何通过Ajax从另一个用户控件更新用户控件?

我有一个带有两个用户控件的ASPX页面,当我在一个上面触发服务器端事件时,我想在另一个上刷新一个网格,这样它就会更新它的数据。

如果有帮助,我正在使用Telerik控件。第一个用户控件上的复选框事件导致第二个用户控件中的RadGrid重新绑定(),我在ASPX页面中有RadAjaxManager,在两个用户控件中有RadAjaxManagerProxy。

3 个答案:

答案 0 :(得分:2)

首先对我Page.DataBind()不起作用。

我在UserControl

宣布
// Declare a delegate
public delegate void save_CommandEventHandler ();

//Event
save_CommandEventHandler SaveViewChanged public event;

// I run SaveViewChanged() from a click_button but it can run from anywhere
protected void save_Click (object sender, EventArgs e)
{
    UpdateDataInDatabase();

    SaveViewChanged ();
}

page.aspx.cs代码中

protected override void OnInit (EventArgs e)
{
    base.OnInit (e);

    // UserControle1 is the Id of your UserControl declared in Aspx Page
    UserControle1.SaveViewChanged + =
       New UserControle.save_CommandEventHandler
       (Save_CommandEventHandler);
}

private void save_CommandEventHandler () {
    // Reload the gridView gvExpence to see the change operated in the user control
    gvExpence.DataSource =DataAcces.getAllCompanyExpence ();
    gvExpence.DataBind ();

    // update user control 2
    usercontrol2.updateView();
}

答案 1 :(得分:1)

异步回调将更新导致回发的控件以及其更新面板的任何父控件。如果在事件发生后没有在浏览器中更新您的数据网格,则表明其更新方法未被调用

尝试在复选框事件

中调用datagrids updatepanel的.update方法

答案 2 :(得分:1)

您可以尝试使用AjaxManager的 ajaxRequest ajaxRequestWithTarget 客户端方法来启动ajax调用。有关这些方法的更多信息,请参阅Telerik的在线文档:http://www.telerik.com/help/aspnet-ajax/ajxclientsideapi.html