destroyTree

Sep 27, 2012 at 7:44 PM

Hi Siderite

Latest updatepanel version seems working different on deleting old DOM nodes, so you should change  LoadApplyPatch() in UpdatePanelShrinkerFilter.cs from this._destroyTree(updatePanelElement);

to

Sys.Application.disposeElement(updatePanelElement, true);

 

Am i right ?

 

Salvo

Coordinator
Sep 27, 2012 at 9:32 PM

I have looked in the Microsoft sources and indeed, it seems you are correct. I will try to update the version of the UpdatePanel to Net4.0 tomorrow, see if it works. Thanks for the message. I am not really maintaining this anymore... perhaps I will be able to enhance it.

Sep 28, 2012 at 8:28 AM

Wow! Thanks, i'll try any implementation.

BTW: i'm really new here, i dont inserted code in the snippets: sorry

Coordinator
Sep 28, 2012 at 9:17 PM

I've updated the project to have sources for both .NET 2/3 and for .NET 4. I hope you will share with people your experience with UPS and how I might attempt to improve it.

Oct 2, 2012 at 5:59 AM

Perfect, thanks.

I will share my experiences, of course.
For example, i would like to discuss about the "post" data wich the UP send to the server, but i will use another thread...

Oct 2, 2012 at 10:08 AM

Sorry, still old function on latest version.

Firebug console log a:

TypeError: this._destroyTree is not a function

Please check the comment for possible update, as wrote in my first message:

 

var UpdatePanelShrinker = {
    ModifyDefaultRenderingMechanism: function (useHandler) {
        if (window.Sys && Sys.WebForms && Sys.WebForms.PageRequestManager) {
            var prm = Sys.WebForms.PageRequestManager.getInstance();
            prm._updatePanel = function (updatePanelElement, rendering) {
                for (var updatePanelID in this._scriptDisposes) {
                    if (this._elementContains(updatePanelElement, document.getElementById(updatePanelID))) {
                        var disposeScripts = this._scriptDisposes[updatePanelID];
                        for (var i = 0; i < disposeScripts.length; i++) {
                            eval(disposeScripts[i]);
                        }

                        delete this._scriptDisposes[updatePanelID];
                    }
                }

                //this._destroyTree(updatePanelElement, true);
                Sys.Application.disposeElement(updatePanelElement, true);


                var result = UpdatePanelShrinker.ApplyPatch(updatePanelElement, rendering);
                switch (result) {
                    case 'OK':
                        updatePanelElement.shrinkFailed = null;
                        break;
                    default:
                        if (updatePanelElement.shrinkFailed) {
                            alert('Error updating panel ' + updatePanelElement.id + ': Failed retry.');
                        } else {
                            if (useHandler) {
                                UpdatePanelShrinker.ForceNormalRefresh(updatePanelElement);
                            } else {
                                alert('Error updating panel ' + updatePanelElement.id + ': ' + result);
                            }
                        }
                        break;
                }
            };
        }
    }

 

 

 

Coordinator
Oct 2, 2012 at 5:47 PM

It is still there for the .NET 2.0/3.5 version, where it is used. For the .NET 4.0 version, your function is used.

Oct 3, 2012 at 6:48 AM

Uops! Sorry :-)

Thanks again