Установка положения прокрутки на PostBack - PullRequest
1 голос
/ 23 июня 2011

Я пишу в asp.net c # code.

Я хочу контролировать положение страницы в сообщении назад.Ни MaintainScrollPositionOnPostback не равно true или false, это то, что я хочу.Истина слишком низкая, а Ложь слишком высокая.Другая проблема заключается в том, что положение должно быть различным в зависимости от того, какое управление нажимается.Третья проблема заключается в том, что MaintainScrollPositionOnPostback = true работает в IE, но не в Firefox.

Want I want похож на теги, связанные с href, например, <a href="#body2">, за исключением кода.

Спасибо за любые предложения.

Ответы [ 3 ]

3 голосов
/ 23 июня 2011

Предполагая, что вы можете использовать JQuery, попробуйте следующее:

http://abeautifulsite.net/blog/2010/01/smoothly-scroll-to-an-element-without-a-jquery-plugin/

Просто введите сценарий и передайте идентификатор элемента управления, вызвавшего событие обратной передачи.

Если по какой-то причине вы не можете использовать jquery, вот менее элегантный подход:

http://clifgriffin.com/2008/10/14/using-javascript-to-scroll-to-a-specific-elementobject/

Редактировать (образцы):

Вот пример прямого HTML-кода с использованием метода jquery, при условии, что у вас есть файл сценария с именем jquery.js в той же папке, что и HTML-страница.

<html>
<head>
    <script type='text/javascript' src='jquery.js'></script>
    <script type='text/javascript'>
    $(document).ready(function() {
        $('html,body').animate({ 
            scrollTop: $('#scrollHere').offset().top 
            }, 0//increase for smooth, visible scroll
        );
    });
    </script>
</head>
<body>

<div style='width:100px; height:1000px; background-color:red;'>
top filler
</div>

<a id='scrollHere' href='#'>Scrolls to this element</a>

<div style="width:100px; height:1000px; background-color:blue;">
bottom filler
</div>

</body>
</html>

Вот пример метода на стороне клиентачто вы можете передать свойство «ClientID» любого видимого элемента управления страницы, и он зарегистрирует JavaScript для прокрутки к элементу при загрузке страницы (предполагается, что jquery зарегистрирован на странице и регистрирует только один вызов на запрос):

private void ScrollToControl(string controlId)
{
    //scroll to button
    string script =
        "$(document).ready(function() {" +
            "$('html,body').animate({ " +
                "scrollTop: $('#" + controlId + "').offset().top " +
            "}, 0);" +
        "});";

    if (!Page.ClientScript.IsStartupScriptRegistered("ScrollToElement"))
        Page.ClientScript.RegisterStartupScript(this.GetType(), "ScrollToElement", script, true);
}
0 голосов
/ 20 февраля 2018

Сохранение позиции прокрутки страницы при нажатии кнопки:

$("#Next").click(function() { $('html,body').animate(
{ scrollTop: $('.required').offset().top 
}, 0//increase for smooth, visible scroll ); });
0 голосов
/ 23 июня 2011

Если вы знаете конкретные значения пикселей, где вы хотите, чтобы ваше окно было, вы можете попробовать использовать функцию window.scrollTo () в Javascript.

window.scrollTo(0,0);
...