Показать Telerik RadWindow с сервера, сохраняя положение прокрутки

При отображении RadWindow при прокрутке вниз страницы, окно отображается в верхней части страницы, и мне нужно прокрутить вверх, чтобы увидеть окно.

Я поддерживаю положение прокрутки после возврата, устанавливая 'MaintainScrollPositionOnPostback':

<%@ Page Language="C#" MaintainScrollPositionOnPostback="true" AutoEventWireup="true" CodeBehind="Default.aspx.cs"

У меня есть RadListView, где ItemTemplate имеет кнопку. Когда эта кнопка нажата, я показываю модальное окно RadWindow.

Проблема заключается в том, что если я прокручиваю до конца страницы и нажимаю кнопку, страница отображает окно в верхней части страницы, но затем прокручивается обратно туда, где был прокручен пользователь (из-за MaintainScrollPositionOnPostback). Таким образом, окно отображается вне экрана, пока пользователь не прокрутит назад

Как я могу показать RadWindow, где пользователь прокручивается при обратной передаче? (Не в верхней части страницы)

Я попытался отобразить RadWindow 2 по-разному, но оба имеют одинаковый результат

Способ 1:

Window.VisibleOnPageLoad = true;

Способ 2:

string script = "function f(){$find(\"" + RadWindow1.ClientID + "\").show(); Sys.Application.remove_load(f);}Sys.Application.add_load(f);";
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "key", script, true);

1 ответ

Добавить время ожидания show() чтобы прокрутка происходила до того, как вы откроете RadWindow. В противном случае вот что происходит:

  1. постбэк возвращается, страница не прокручивается

  2. RadWindow показывает, центры в текущем окне просмотра

  3. прокрутка, поэтому ваше RadWindow находится не там, где вы ожидаете

Вот пример:

string script = "function f(){setTimeout(function(){$find(\"" + RadWindow1.ClientID + "\").show(); },111);Sys.Application.remove_load(f);}Sys.Application.add_load(f);";

где вы можете настроить таймаут 111 мс, который я добавил для наглядности. Использование 0 в качестве аргумента также может быть достаточно. Если честно, я не знаю, сколько времени понадобится, чтобы свиток сдвинулся.

Кстати, я бы создал функцию JS в разметке, которая бы принимала идентификатор RadWIndow в качестве аргумента и вызывала его вместо этого, чтобы сделать код более читабельным

Другие вопросы по тегам