The issue with the UpdatePanel control is that it’s not possible to invoke an AJAX request from client-side JavaScript.  Though possible to refresh the UI from client-side JavaScript using various means, the UpdatePanel control itself doesn’t invoke a postback explicitly through some API call; instead, it reacts to form posts through specifically targeted controls.  The Telerik RadAjaxPanel control is very nice control to have in your .NET developer toolbelt.  By calling the following client-side code:

var panel  = $find(“<%= RAP1.ClientID %>”);

This code invokes a server-side postback, firing the entire lifecycle, and calling the AJaxRequest server-side event with the data passed as an argument as in the following:

protected void RAP1_AjaxRequest(object sender, AjaxRequestEventArgs e)
   if (e.Argument == “data”)
       //Act on async postback

This comes in very handy, and can setup performance-adding features like lazy loading of tabs, dynamic loading of content after the page initially loads (working like, and more.

There are some additional features to be aware of.  Both the RadAjaxPanel and the RadAjaxManager controls allow you to do more than just that; these controls support running scripts after the response is written to the browser.  The ResponseScripts collection can take a string statement that outputs JS code and do any additional processing, like the following:


When the async update, the alert will run afterwards.  This can also be used to work with a control’s API too, or whatever else you may need to do.  For instance, to call a method on the client of an AJAX control, we can do something like:

RAP1.ResponseScripts.Add(string.Format(“$find(‘{0}’).set_text(‘Some text’);”, this.RadTextBox1.ClientID);

Here you can see we’re calling the set_text method on an AJAX RadTextBox control.

Additionally, for more information on lazy loading content from the client-side AJAX calls, check out this very helpful forum post: