Белорусская цифровая библиотека





Сегодня в номере

Новости
  • altWebDeveloper #4
  • ASP.NET Developer Kits
  • Google остается лидером поиска в интернете
  • Microsoft открыла Hotmail для легального спама
  • Стартовал восьмой Российский интернет-форум
  • Новый российский сервис для пересылки файлов без электронной почты
  • Немецкая программа для обхода блокираторов рекламы
  • Конкурс для разработчиков .NET!
  • Новости .NET
  • "Десерт": Microsoft запатентовала яблоки
    Microsoft .NET
  • Доступ к файлам
  • Использование «ASP:XML runat=server> внутри страницы ASP.NET
  • Как сохранить позицию скроллинга странице после PostBack
  • Использование Microsoft Visual Studio .NET
  • Как создать решение с компонентами, написанными на разных языках
  • Вопросы и ответы конкурса разработчиков .NET
  • Visual Studio для "бедных"
  • ASP .NET Web Matrix
  • C# - инструмент разработки SharpDevelop
    Web-promoting
  • Стратегии позиционирования сайта в поисковых системах
  • Глоссарий терминов по поисковым системам
  • Что такое Robots.txt?
  • Трафик от ссылающихся сайтов
  • Анализ спроса и повышение видимости в поисковых машинах
  • Богатые и бедные проектовладельцы
  • Поисковые системы в интернете
  • Как выбрать поисковую машину
  • Как сделать веб-сайт эффективным
    .NET on-line
  • Англоязычные сайты
  • Русскоязычные сайты
  • Обмен ссылками
    Для души
  • Брюс Стерлинг
    Наш нейронный Чернобыль


    Рассылка журнала

    Рассылки@Mail.ru
    Новости altWebDeveloper

    © 2004 CAS "altDesign"
    Все права защищены

  • ..: altWebDeveloper - сетевой журнал для вебмастеров
    и разработчиков Microsoft .NET :..

    ..: Как сохранить позицию скроллинга странице после PostBack :..

    Автор: Jeff Prosise



    Программирующих на ASP.NET часто огорчает тот факт, что после того как произошло событие отправки данных серверу назад (PostBack) возвращаемая страница теряет предыдущую позицию скроллинга, что особенно неудобно при работе с "длинными" формами. Пример, приведенный в данной статье показывает решение, при помощи которого можно заставить браузер вернуть предыдущую позицию. Идея проста - при помощи JavaScript вместе с отправкой PostBack серверу отсылается текущее значение скролиннга окна браузера, которое используется после для формирования возвращаемой страницы. В тэг записывается дополнительный атрибут onload, который опять же при помощи JavaScript и позволяет вернуть позицию окна до PostBack.

    <%@ Page Language="C#"%>
    
    <html>
    
      <%
        if (Request["__SCROLLPOS"] != null &&
         Request["__SCROLLPOS"] != String.Empty) {
           int pos = Convert.ToInt32 (Request["__SCROLLPOS"]);
           Response.Write ("<body id=\"myBody\" " +
            "onload=\"javascript:myBody.scrollTop=" +
            pos + ";\">");
        }
    
        else
           Response.Write ("<body id=\"myBody\">");
    
      %>
    
        <form id="myForm" onsubmit=
        "javascript:return onSubmitForm();" runat="server">
    
            <input type="hidden" name="__SCROLLPOS" value="" />
    
            <!-- код вашей страницы -->
    
            <asp:Button Text="Test" RunAt="server" />
    
        </form>
    
      </body>
    </html>
    
    <script language="javascript">
    function onSubmitForm ()
    {
        myForm.__SCROLLPOS.value = myBody.scrollTop;
        return true;
    }
    </script>
    

    Для проверки работы примера вставьте достаточно содержания страницы (таблицу, форму и т.п.), так чтобы страница не умещалась по высоте на экран. Нажмите на кнопку Test и убедитесь, что браузер вернет страницу в той же позиции скролиннга.

    К сожалению, этот код будет работать только если PostBack был вызван контролом Button. Другие контролы, вызывающие PostBack, вроде LinkButton или Calendar генерируют это событие программным путем, что не допускает выполнение функции onSubmitForm.




    При перепечатке любого материала с журнала или с сайта, видимая ссылка на источник http://altwebdeveloper.nm.ru и все имена, ссылки авторов обязательны.

    © 2004 CAS "altDesign"
    © Валерий В. Макеев (deepInfinity)



    @ library.by