Панель обновлений и прокрутка вверх при нажатии кнопки

У меня следующая установка:

UpdatePanel -> Multiview -> 3 просмотра

Когда я нажимаю кнопку в одном из представлений, он должен перейти к следующему представлению и медленно прокрутить вверх.

В настоящее время я пробовал следующие методы, из которых ни один из них не работал (даже быстрая прокрутка - он просто все еще смеется надо мной ;-)):

protected void PartOneContinue_Click(object sender, EventArgs e)
{
    CheckoutFlow.SetActiveView(PaymentMethodView);
    ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "<script>scrollTo(0,0);</script>", true);
}

И следующее:

ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "<script>$(window).scrollTop(100);</script>", true);

И следующее, где ScrollToTop была функцией с двумя разными сценариями, указанными выше:

ClientScriptManager cs = Page.ClientScript;       
cs.RegisterStartupScript(this.GetType(), "ScrollToTop", "ScrollToTop()");

Любые идеи будут высоко оценены.


person Lars Holdgaard    schedule 08.01.2012    source источник
comment
Взгляните на этот пост stackoverflow.com/questions/1174863 /   -  person PMC    schedule 08.01.2012
comment
К сожалению, не повезло. Я пробовал: ScriptManager.RegisterStartupScript (this, this.GetType (), scroll, $ ('# LeveringsDiv'). Animate ({scrollTop: elementOffset}, 200) ;, true); Где lengingsdiv - это div в нижней части представления с кнопкой, это забавно.   -  person Lars Holdgaard    schedule 08.01.2012


Ответы (3)


Попробуйте этот метод

    private void SubirTelaTopo()
    {
        StringBuilder csText = new StringBuilder();
        csText.Append("$('body,html').animate({ scrollTop: 0 }, 500);");
        ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), Guid.NewGuid().ToString(), csText.ToString(), true);
    }
person Duarte    schedule 08.09.2014

Вы проверили свой доктайп? Также может помочь установка высоты (css) html и body на 100 процентов.

person matthijs koevoets    schedule 08.01.2012
comment
Что вы имеете в виду под доктайпом? Я протестирую на 100% - person Lars Holdgaard; 08.01.2012
comment
Думаю, ему нужен переходный dtd: ‹! DOCTYPE html PUBLIC - // W3C // DTD XHTML 1.0 Transitional // EN w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd - person matthijs koevoets; 08.01.2012
comment
У меня это есть, все еще есть проблема. - person Lars Holdgaard; 08.01.2012
comment
вы пробовали файл alert / console.log, чтобы убедиться, что ваш скрипт вообще выполняется? Например: ScriptManager.RegisterStartupScript (this, this.GetType (), myscript, alert ('hello world'), true); - person matthijs koevoets; 08.01.2012

При обращении к ScriptManager.RegisterStartupScript вы передаете сценарий, включающий <script> теги и также передается true для параметра addScriptTags. Я предполагаю, что блок скрипта, отображаемый на вашей странице, выглядит так:

<script type="text/javascript">
<script>scrollTo(0,0);</script>
</script>

Я могу представить, что это не работает в большинстве браузеров из-за вложенных тегов скрипта. Попробуйте удалить теги из своего фрагмента JavaScript или передать false вместо addScriptTags

// Option 1
ScriptManager.RegisterStartupScript(this, this.GetType(), 
  "myscript", "scrollTo(0,0);", true);

// Option 2
ScriptManager.RegisterStartupScript(this, this.GetType(), 
  "myscript", "<script>scrollTo(0,0);</script>", false);

Если это не решит вашу проблему, вы можете решить ее исключительно с помощью клиентского скрипта, используя _ 9_ событие:

Событие pageLoaded возникает после обновления всего содержимого на странице независимо от того, было ли оно обновлено из-за синхронной (полностраничной) обратной передачи или асинхронной обратной передачи. Это событие можно использовать для предоставления настраиваемого эффекта перехода для обновленного содержимого.

person Michiel van Oosterhout    schedule 08.01.2012
comment
Я просто попробовал это, и ничего не вышло. Есть идеи, как отследить, что именно создает проблему? - person Lars Holdgaard; 08.01.2012
comment
Взгляните на DOM после того, как обновление произошло, с помощью инструментов разработчика Chrome или Firefox Firebug, чтобы узнать, были ли у вас ранее два вложенных тега сценария. Также отредактируйте свой вопрос с любыми ошибками JavaScript, которые вы получаете в консоли JavaScript. - person Michiel van Oosterhout; 08.01.2012