MultiView & MaintainScrollPositionOnPostBack - PullRequest
       9

MultiView & MaintainScrollPositionOnPostBack

0 голосов
/ 30 января 2011

У меня есть страница с элементом управления MultiView, и некоторые виды достаточно длинные для прокрутки.Так как для элементов управления в обзорах для правильной работы требуется обратная передача, на странице включен MaintainScrollPositionOnPostBack.

У меня проблема при переходе пользователя из одного представления в другое.Если они были в нижней части длинного вида и переходили в другое длинное представление, новое представление загружается и прокручивается полностью до самого дна.Мне нужно перейти к началу страницы, когда пользователь переходит к новому представлению в MultiView.

Я пытался использовать событие OnActiveViewChanged, чтобы: - вызвать RegisterStartupScript, чтобы установить window.location.hash вякорь, который я поместил в верхней части страницы.- вызвать RegisterStartupScript для вызова window.scrollTo (0,0); - установить для MaintainScrollPositionOnPostBack значение false временно

Проблема заключается в том, что ни один из них, по-видимому, не влияет на фактическую обратную передачу перехода, они действуют на next обратная передача, которая на самом деле вызывает большую проблему.

У кого-нибудь есть проверенный метод, позволяющий переходу страницы MultiView на верхнюю часть страницы только при обратной передаче, переходящей в новое представление?

Ответы [ 2 ]

4 голосов
/ 31 января 2011

Это точно та же проблема, что и у меня сегодня с многовидом. Я нашел ваш вопрос и пошел искать ответы. Кажется, мы нашли ту же статью!

(Код товара на C #)

 private void ResetScrollPosition()
  {
      if (!ClientScript.IsClientScriptBlockRegistered(this.GetType(), "CreateResetScrollPosition"))
      {
          System.Text.StringBuilder script = new System.Text.StringBuilder();
          script.Append("function ResetScrollPosition() {");
          script.Append("  var scrollX = document.getElementById(\'__SCROLLPOSITIONX\');");
          script.Append("  var scrollY = document.getElementById(\'__SCROLLPOSITIONY\');");
          script.Append("  if (scrollX && scrollY) {");
          script.Append("    scrollX.value = 0;");
          script.Append("    scrollY.value = 0;");
          script.Append("  }");
          script.Append("}");

          //Create the ResetScrollPosition() function
          ClientScript.RegisterClientScriptBlock(this.GetType(), "CreateResetScrollPosition",
             script.ToString(), true);
          //Add the call to the ResetScrollPosition() function
          ClientScript.RegisterStartupScript(this.GetType(), "CallResetScrollPosition", "ResetScrollPosition();", true);
      }
  }
1 голос
/ 31 января 2011

Найден ответ / обходной путь, наконец: 4Guys

Вы должны заставить ASP.Net сделать это за вас, манипулируя скрытыми полями, которые он использует для отслеживания положения прокрутки.

...