Вопрос по asp.net, vb.net, visual-studio – Запрет прокрутки страницы после обратной передачи

13

Я работаю над добавлением оценок пользователей на основе их проверок в CheckBoxList. Каждый раз, когда пользователь устанавливает флажок, значение,X, добавляется к общему баллу. Когда пользователь снимает флажок, значение,X, вычитается из общего балла. Здесь нет проблем.

Проблема, с которой я сталкиваюсь, заключается в том, что использование параметра AutoPostback в свойствах CheckBoxList заставляет страницу загружаться обратно вверх, а не оставаться там, где находился пользователь, что означает, что они должны продолжать прокручиваться вниз после каждой проверки / снятия флажка. Есть ли способ предотвратить это?

Ваш Ответ

6   ответов
1

MaintainScrollPositionOnPostback="true" тег это самая важная вещь.

37
Ajax solution

лучший способ - использовать вызов Ajax для этого. Страница вообще не перемещается, а данные просто обновляются. Панель обновления - это быстрое и простое решение для запуска - не оптимальное решение, но если у вас простая страница, она очень хорошая.

Second solution

Второе решение заключается в использовании якоря #. Вы устанавливаете точку, в которой вам нравится показываться:

<a name="PointA"></a>

И вы называете страницу, используя этот якорь какpage.aspx#PointA.

Third solution

Третье решение заключается в использовании внутреннего JavaScript-кода ASP.NET. На странице объявления (верхняя первая строка)<%@ Page MaintainScrollPositionOnPostback="true" %>.

Или на web.config, чтобы повлиять на все страницы,<pages maintainScrollPositionOnPostBack="true" />.

Или программноSystem.Web.UI.Page.MaintainScrollPositionOnPostBack = true; открыть и закрыть по требованию.

Using jQuery

С помощью только двух строк кода JQuery вы можете сделать хорошую анимацию в точке, которую вы хотите переместить после поста назад:

var WhereToMove = jQuery("#PointA").position().top;
jQuery("html,body").animate({scrollTop: WhereToMove }, 1000);

И вы перемещаете страницу к этому элементу:

<a id="PointA" name="PointA"></a>
Google search

И, наконец, вы можете использовать собственный код JavaScript, чтобы сделать то же самое. В Интернете есть много примеров для этого:https://www.google.com/?q=asp.net+remain+position

Я выяснил, почему это не работает: моя страница никогда не прокручивается, это подпанель внутри страницы, которая прокручивается. Мне придется использовать JavaScript, я думаю.
Что касается трехмерного решения (встроенного asp.net), куда я помещаю эту строку точно в файл web.config? Я не могу найти подходящее место, чтобы заставить его работать. Нужна ли мне ТОЛЬКО эта строка в веб-конфигурации или обе другие строки на самой странице И одна в файле web.config?
@ user1884155 Web.config является глобальным, если вы разместите его там, то все равно, что добавить его на всех страницах. Вы можете начать с теста, добавив его только на страницу и заставив его работать.
Работает эффектно! Спасибо! Kruug
0

<pages maintainScrollPositionOnPostBack="true">
Ваш ответ дублируетсяthis ответ опубликован ~ 3 года назад.
0

Просто укажите тегу body runat = & quot; сервер & quot; в HTML и id = & quot; тело & quot; или что вы хотите сослаться на это, как в коде (я буду использоватьbody для примера).

Затем вы можете добавить / изменить атрибуты тега в коде так:

Body.Attributes.Add("scroll", "no")

Поместите код на страницу загрузки.

3

On the Page in which the scroll should be disabled, set the attribute MaintainScrollPositionOnPostback in Page ("<%@ Page ....>") directive to true i.e. <%@ Page MaintainScrollPositionOnPostback=true ...other settings... > should appear on the top of the aspx page

For all pages in the website, add the following line in web.config: <pages MaintainScrollPositionOnPostback=true>

Incorporate AJAX Queries

6

едачи: Поместите это в web.config.
1) pages maintainScrollPositionOnPostBack="true"

Многие люди задавались вопросом, где находится точное место для этой строки. Таким образом, точное место для размещения этой строки

<system.web>
<pages maintainScrollPositionOnPostBack="true">
</system.web>

Note : This will apply on the whole solution it prevent each form scrolling

2)  Второй способ добиться этого - поместить эту строку вверху файла aspx.

MaintainScrollPositionOnPostback = верно

Как это

<%@ Page MaintainScrollPositionOnPostback=true Language="C#" AutoEventWireup="true" CodeBehind="xx.aspx.cs" Inherits="xx.Global" %>

Note: This will apply on the specific form which u want to prevent.

Похожие вопросы