In Updating an UpdatePanel in the Client side, I described how I was able to update an UpdatePanel from the client side. The solution was pretty simple: Create an extender which adds an hidden button to the update panel, and performs a click on it when the update() method is called from the JavaScript.

Recently I saw a new Webcast in the Asp.Net Ajax How Do I series which explains how to do this with and without the button.

In short, the solution requires a call to a private method in the PageRequestManager which performs a post back:

var prm = Sys.WebForms.PageRequestManager.getInstance();
prm._doPostBack(updatePanelClientID,”);

I decided to upgrade the extender, which now calls this method instead of adding a button and clicking on it. It makes the server and client code of the extender cleaner, and more simple.

Also I have fixed the issue of the OnUpdated event, which is now working perfectly: It is triggered when the update() method in the client is called. I caused the event to trigger by using properties from the ScriptManager:

ScriptManager currentScriptManager = ScriptManager.GetCurrent(Page);

if ((currentScriptManager.IsInAsyncPostBack) &&
	(currentScriptManager.AsyncPostBackSourceElementID == TargetUpdatePanel.ID))
{
	OnUpdated(new UpdatedEventArgs());
}   

I simply check if the post back is asynchronous and was caused by the update panel (the id I used when I called the _doPostBack method in the client).

Feel free to download and use my brand new UpdatePanelExtender!

I will be glad to read your comments,suggestions, bugs, etc...

Have a great weekend