UpdatePanelben scrollbar-pozíció megtartása

Egy UpdatePanelben lévő divben jelenítetek meg egy GridView-t. A div mérete fix, így mikor a gridnek túl sok sora van a div scrollozható. A grid egy AJAX timer eseménykezelőjében UpdatePanel.Update()-tel frissül. Ez a frissülés viszont mindig visszapozicionálta az elejére a div scrollbarját, ami rendkívül idegesítő.

Végül így sikerült megoldanom:

    <script type="text/javascript">
        var scrollPosition
        
        Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler)
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler)

        function BeginRequestHandler(sender, args) 
        {
            var element = document.getElementById('a_scrollbaros_div')
            var element = $get('a_scrollbaros_div')
            scrollPosition = element.scrollTop
        }

        function EndRequestHandler(sender, args)
        {
            var element = document.getElementById('a_scrollbaros_div')
            var element = $get('a_scrollbaros_div')
            element.scrollTop = scrollPosition 
        } 
    </script>

Szépen feliratkoztam minden kérésre és válaszra. A kérésnél kimentem a scrollbar tetejének pozicióját, válasznál pedig visszaállítom. Úgy tűnik működik IE 6,7 és Firefox 2.0 alól is.



Dávid Zoltán

Dávid Zoltán Mérnök Informatikusként végeztem a BME-n, jelenleg webfejlesztéssel és gépi tanulással foglalkozom.

2007.09.12. 18:10:01 | Permalink | Hozzászólások: 2 | Tárgyszavak: , , ,


  • CommandArgument CheckBoxnak

    Dávid Zoltán Az ASP.NET CheckBoxnak sajnos nincs “Value” vagy “CommandArgument” jellegű tulajdonsága, amihez adatot köthetnénk, hogy azt egy CheckChanged jellegű eseménykezelőben elérjük. Ha mégis ilyesmire vágyunk innováljunk magunknak egy új attribútumot (például elemIDdata-id), a CheckBox markupjába, aztán érjük el szerveroldalon a CheckBox Attributes tömbjén keresztül. Tovább »
  • Linkblog: ASP.NET Menu IE8 alatt

    Balássy György (MS RD, ASP.NET MVP, MCTS) Ha a standard ASP.NET Menu vezérlőnek használjuk a dinamikusan kinyíló funkcióit, akkor készüljünk fel rá, hogy a menünk Internet Explorer 8 alatt nem fog helyesen megjelenni. Tovább »


Írja meg Ön is véleményét!


Hozzászólásokat csak regisztrált, bejelentkezett felhasználóktól tudunk elfogadni!

Hozzászólások


Dávid Zoltán Dávid Zoltán  (2007.09.23. 21:47:38)

Köszi, átírtam.

Balássy György (MS RD, ASP.NET MVP, MCTS) Balássy György (MS RD, ASP.NET MVP, MCTS)  (2007.09.13. 9:44:50)

Ha az ASP.NET AJAX-ot használod, akkor nem egyszerűbb neked a getElementById helyett a $get függvényt használni? Az "garantáltan" cross-browser.