也许我在胡思乱想,因为这看起来应该很简单,但是如何通过Ajax从另一个用户控件更新用户控件?
我有一个带有两个用户控件的ASPX页面,当我在其中一个控件上触发服务器端事件时,我想刷新另一个控件上的网格,这样它就会更新它的数据。
如果有帮助的话,我正在使用Telerik控件。第一个用户控件上的Checkbox事件导致第二个用户控件中的RadGrid重新绑定(),并且我在ASPX页面中有RadAjaxManager,在两个用户控件中有RadAjaxManagerProxy。
发布于 2010-09-23 19:47:25
首先,对我来说,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();
}发布于 2010-07-12 17:23:31
异步回调将更新导致回发的控件及其更新面板的所有父控件。如果在事件发生后,您的datagrid没有在浏览器中更新,则会提示未调用其update方法。
尝试在checkbox事件中调用datagrids updatepanel的.update方法
发布于 2010-07-14 22:41:07
您可以尝试使用的ajaxRequest或AjaxManager的ajax客户端方法来发起ajax调用。有关这些方法的更多信息,请参阅Telerik的在线文档:http://www.telerik.com/help/aspnet-ajax/ajxclientsideapi.html
https://stackoverflow.com/questions/3220465
复制相似问题