Обновление панели и прокрутка вверх при нажатии кнопки - PullRequest
1 голос
/ 08 января 2012

У меня есть следующие настройки:

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()");

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

Ответы [ 3 ]

2 голосов
/ 08 сентября 2014

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

    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);
    }
0 голосов
/ 08 января 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);

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

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

0 голосов
/ 08 января 2012

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

...