How to call a client side javascript function after a specific UpdatePanel has been loaded

43,994

Solution 1

You can hook the PageRequestManager.beginRequest event and inspect the BeginRequestEventArgs.postBackElement property.

Note that it doesn't really give you the UpdatePanel, but the control inside of the UpdatePanel. That should be good enough, though.

Edit: Even better, the PageRequestManager.pageLoaded event gives you PageLoadedEventArgs.panelsUpdated (and panelsCreated) properties.

Solution 2

Thanks - both good answers. I went with the client side script "pageloaded" in the end. That is a fairly buried method that google did not reveal to me. For those who are interested, this code works with FireBug to give a good demo of the PageLoaded method working to find the updated panels:

<script type="text/javascript">
        $(document).ready(function() {
            panelsLoaded = 1;
            Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(PageLoaded)
        });

        function PageLoaded(sender, args) {
            console.log("I have occured " + panelsLoaded++ + " times!");

            var panelsCreated = args.get_panelsCreated();
            for (var i = 0; i < panelsCreated.length; i++) {
                console.log("Panels Updating: " + panelsCreated[i].id);
            }

            var panelsUpdated = args.get_panelsUpdated();
            for (var i = 0; i < panelsUpdated.length; i++) {
                console.log("Panels Updating: " + panelsUpdated[i].id);
            }
        }
    </script>

Solution 3

This may be your solution.

In the code behind for the UpdatePanel's OnLoad event, register a startup script.

string scriptText = "alert('Bar!');";

ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "foo", scriptText, true);
Share:
43,994
YeahStu
Author by

YeahStu

Ohio State University Alumnus I am a passionate Software Developer with a hunger to learn more about programming, technology, marketing, and how to run a business. I enjoy pragmatic software design and product development. My Blog

Updated on August 23, 2020

Comments

  • YeahStu
    YeahStu almost 4 years

    How is it possible to call a client side javascript method after a specific update panel has been loaded?

    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler) does not work for me because this will fire after ANY update panel finishes loading, and I can find no client side way to find which is the one

    ScriptManager.GetCurrent(Page).AsyncPostBackSourceElementID AsyncPostBackSourceElementID does not work for me as this is a server side object, and i want Client Side

    The ClientSide .Net framework must know which UpdatePanel it is updating in order to update the correct content. Surely there is a way to hook into this event?

    Any help would be appreciated.

  • Michel
    Michel about 14 years
    This was extremely helpful. Thank you!
  • bambams
    bambams about 13 years
    For some reason the add_pageLoaded method doesn't exist for me... :(
  • Taylor K.
    Taylor K. over 10 years
    Great solution, I've been searching for answers to this for a while now.