Hai, i am currently on project that using your very helpful Telerik UI.
I am using RadGrid, and i am following the example like in this link and i got a problem.
I am using one page and multiple UserControl. I got an error RadAjaxManager is only one in one page, and the solution i found is using RadAjaxManagerProxy.
But, i am confused how to use it? especially at Ajax Event Handler.
Please kindly help me.
Thank you in advance.
4 Answers, 1 is accepted
Hello, i can find the edit button, so i reply this post with update.
now my web is using two UserControl in one WebPage.
In WebPage i got:
webpage.aspx
1.<telerik:RadScriptManager runat="server" ID="RadScriptManager1" />2.<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" OnAjaxRequest="RadAjaxManager1_AjaxRequest">3.</telerik:RadAjaxManager>webpage.aspx.cs
protected void RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e) { switch (e.Argument) { case "RebindSenderReferral": usercontrol1.Rebind(); break; case "RebindAndNavigateSenderReferral": usercontrol1.RebindAndNavigate(); break; case "RebindReceiverReferral": usercontrol2.Rebind(); break; case "RebindAndNavigateReceiverReferral": usercontrol2.RebindAndNavigate(); break; default: break; }
and i add this in every usercontrol in webpage
usercontrol1.ascx
1.<telerik:RadAjaxManagerProxy ID="RadAjaxManagerProxy1" runat="server" >2. <telerik:AjaxSetting AjaxControlID="RadGrid1">3. <UpdatedControls>4. <telerik:AjaxUpdatedControl ControlID="RadGrid1" LoadingPanelID="gridLoadingPanel"></telerik:AjaxUpdatedControl>5. </UpdatedControls>6. </telerik:AjaxSetting>7. </AjaxSettings>8.</telerik:RadAjaxManagerProxy>
function refreshGrid(arg) {
if (!arg) {
$find("<%= RadAjaxManager.GetCurrent(Page).ClientID %>").ajaxRequest("RebindSenderReferral");
}
else {
$find("<%= RadAjaxManager.GetCurrent(Page).ClientID %>").ajaxRequest("RebindAndNavigateSenderReferral");
}
}
usercontrol2.ascx
1.<telerik:RadAjaxManagerProxy ID="RadAjaxManagerProxy2" runat="server" >2. <telerik:AjaxSetting AjaxControlID="RadGrid2">3. <UpdatedControls>4. <telerik:AjaxUpdatedControl ControlID="RadGrid2" LoadingPanelID="gridLoadingPanel"></telerik:AjaxUpdatedControl>5. </UpdatedControls>6. </telerik:AjaxSetting>7. </AjaxSettings>8.</telerik:RadAjaxManagerProxy>
function refreshGrid(arg) {
if (!arg) {
$find("<%= RadAjaxManager.GetCurrent(Page).ClientID %>").ajaxRequest("RebindReceiverReferral");
}
else {
$find("<%= RadAjaxManager.GetCurrent(Page).ClientID %>").ajaxRequest("RebindAndNavigateReceiverReferral");
}
}
How to make ajax at two RadGrid in different UserControl runnning?
So, when i click at RadGrid1 in UserControl1, the ajax refresh RadGrid1
and click at RadGrid2 in UserControl2 the, the ajax refresh RadGrid2?
Thank you
In order to achieve the required functionality you should add programmatic settings for the both RadGrid controls to be updated by the main RadAjaxManager and also handle the AjaxRequest event in each UserControl separately like this:
UserControl1:
protected void Page_Load(object sender, EventArgs e) { RadAjaxManager manager = RadAjaxManager.GetCurrent(Page); manager.AjaxSettings.AddAjaxSetting(manager, RadGrid1); manager.AjaxRequest += new RadAjaxControl.AjaxRequestDelegate(manager_AjaxRequest);}protected void manager_AjaxRequest(object sender, Telerik.Web.UI.AjaxRequestEventArgs e){ switch (e.Argument) { case "RebindSenderReferral": //your logic break; case "RebindAndNavigateSenderReferral": //your logic break;}UserControl2:
protected void Page_Load(object sender, EventArgs e) { RadAjaxManager manager = RadAjaxManager.GetCurrent(Page); manager.AjaxSettings.AddAjaxSetting(manager, RadGrid2); manager.AjaxRequest += new RadAjaxControl.AjaxRequestDelegate(manager_AjaxRequest);}protected void manager_AjaxRequest(object sender, Telerik.Web.UI.AjaxRequestEventArgs e){ switch (e.Argument) { case "RebindReceiverReferral": //your logic break; case "RebindAndNavigateReceiverReferral": //your logic break;}Note that you should remove the RadAjaxManagerProxy control in this approach
Regards,
Maria Ilieva
Telerik
Hai Maria,
Thank you for your reply.
Why i should remove RadAjaxManagerProxy in each usercontrol?
I've done it like this:
<telerik:RadAjaxManagerProxy ID="RadAjaxManagerProxy2" runat="server"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="RadAjaxManager1"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="RadGrid2" LoadingPanelID="gridLoadingPanel2"></telerik:AjaxUpdatedControl> </UpdatedControls> </telerik:AjaxSetting> <telerik:AjaxSetting AjaxControlID="RadGrid2"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="RadGrid2" LoadingPanelID="gridLoadingPanel2"></telerik:AjaxUpdatedControl> </UpdatedControls> </telerik:AjaxSetting> </AjaxSettings></telerik:RadAjaxManagerProxy>and it run well
When you have the settings below added programmatically to the main RadAjaxManager you do not need to have them in the RadAjaxManagerProxy controls:
UC1:
protected void Page_Load(object sender, EventArgs e) { RadAjaxManager manager = RadAjaxManager.GetCurrent(Page); manager.AjaxSettings.AddAjaxSetting(manager, RadGrid1); manager.AjaxSettings.AddAjaxSetting(RadGrid1, RadGrid1); manager.AjaxRequest += new RadAjaxControl.AjaxRequestDelegate(manager_AjaxRequest);}protected void manager_AjaxRequest(object sender, Telerik.Web.UI.AjaxRequestEventArgs e){ switch (e.Argument) { case "RebindSenderReferral": //your logic break; case "RebindAndNavigateSenderReferral": //your logic break;}UC2:
protected void Page_Load(object sender, EventArgs e) { RadAjaxManager manager = RadAjaxManager.GetCurrent(Page); manager.AjaxSettings.AddAjaxSetting(manager, RadGrid2); manager.AjaxSettings.AddAjaxSetting(RadGrid2, RadGrid2); manager.AjaxRequest += new RadAjaxControl.AjaxRequestDelegate(manager_AjaxRequest);}protected void manager_AjaxRequest(object sender, Telerik.Web.UI.AjaxRequestEventArgs e){ switch (e.Argument) { case "RebindReceiverReferral": //your logic break; case "RebindAndNavigateReceiverReferral": //your logic break;}Regards,
Maria Ilieva
Telerik