2009-04-11 Marek Habersack * UpdatePanel.cs: implemented SingleChildControlCollection to be used in CreateControlCollection (). RequiresUpdate not only checks the update mode and explicit update requests, but also looks if any triggers fired. Initialize () initializes triggers only if partial rendering is supported by the ScriptManager. IsInPartialRendering property no longer returns the value of ScriptManager.IsInPartialRendering. Instead, it relies on the value of instance field which can be set using new internal SetInPartialRendering () method (called from ScriptManager.RenderPageCallback ()) Simplified the logic in RenderChildren (). * ScriptManager.cs: no need to register panels for refresh in OnPreRenderComplete, this is now done in RenderPageCallback. Modified HasBeenRendered () so that it doesn't query whether the panel has been explicitly updated by the user, but checks whether panel is in the list of panels to refresh. RaisePostDataChangedEvent () doesn't update the panel whose id is named in the POST request for refresh. This is handled in RenderPageCallback. Reverted the changes to WriteCallbackPanel and RenderFormCallback committed in r129774. RenderPageCallback now correctly detects panels to be refreshed (and thus included in the async response). * AsyncPostBackTrigger.cs, PostBackTrigger.cs: implemented HasTriggered (). 2009-04-08 Marek Habersack * ScriptComponentDescriptor.cs: properties/events/references must be serialized in alphabetical order. This matches what .NET does. Some 3rd party controls depend upon this fact. 2009-04-07 Marek Habersack * ScriptComponentDescriptor.cs: new values replace old in AddEntry. 2009-03-19 Marek Habersack * ScriptManager.cs: WriteCallbackPanel is called from UpdatePanel.RenderChildren and should not output anything for panels registered as the ones to refresh. If such a panel calls this method, its output is stored in a dictionary to be used later in RenderFormCallback. RenderFormCallback first renders all the form controls. In that process UpdatePanel instances, if any, may call WriteCallbackPanel. After that, if there are panels registered for refresh, another loop over the list is made this time checking whether any panels left their output in WriteCallbackPanel. If a panel hasn't done it it is rendered. And last, another check is done to see if the loop described above caused any panels to leave output in WriteCallbackPanel. If yes, the output is written to the text writer. 2009-01-26 Marek Habersack * ScriptManager.cs: before registering script service reference check if the service type is decorated with the [ScriptService] custom attribute. Only such service types can be called from client JavaScript. 2008-10-02 Marek Habersack * ScriptManager.cs: reverting revision 114552 since the real bug was somewhere else. The correct fix is to make sure UpdatePanels which output something _or_ have been named in the POST request as requiring a refresh are marked as such. Only in that situation HasBeenRendered returns true (as it should for those panels) Cosmetical output change - the hidden fields are output after the update panels contents is sent in an async request. It makes the async response look similar to the MS.NET's one but, more importantly, makes debugging easier. 2008-09-23 Marek Habersack * ScriptManager.cs: CultureInfoSerializer no longer derives from the obsolete LazyDictionary. 2008-09-01 Marek Habersack * UpdatePanel.cs: if the writer passed to RenderChildren is not derived from ScriptManager.AlternativeHtmlTextWriter, check whether its InnerWriter derives from that type and, if yes, use it from that point onwards. 2008-08-13 Marek Habersack * ScriptManager.cs: always request the webform.js script to be present. It may happen that a control during a dynamic update will need to call one of the WebForm_* functions and the call will fail as the script will be absent. If debugging is enabled, send the full exception backtrace in WriteCallbackException - helps debugging AJAX errors. 2008-08-08 Marek Habersack * UpdatePanel.cs: do not check whether a panel whose children are to be rendered has been marked for update in the async postback mode. It prevents complex scenarios where there is one superior update panel which owns an inferior one, and only the superior one has Update called on it. 2008-06-05 Marek Habersack * ScriptManager.cs: do not throw NREX when there are no profile or authentication service sections in the config files. 2008-05-15 Marek Habersack * AsyncPostBackTrigger.cs: don't thrown an exception if EventName is null or empty and there is no DefaultEventAttribute attached to the control. 2008-05-14 Marek Habersack * ScriptComponentDescriptor.cs: do not add the same entry twice to a dictionary.