ASP.NET: как остановить переход страницы при использовании AutoPostBack?

Я использую ASP.NET, и в элементе управления мастера есть переключатели, где, если выбрано "Да", панель отображается, но если выбрано "Нет", панель скрыта. У меня для MaintainScrollPositionOnPostBack установлено значение True, хотя событие ActiveStepChanged меняет его на False, поэтому при нажатии кнопки "Далее" для просмотра следующего шага мастера оно начинается в верхней части страницы. Проблема заключается в том, что после нажатия кнопки "Далее" при первом нажатии радиокнопки она переходит в верхнюю часть страницы (страница сохраняет свое положение при каждом нажатии радиокнопки после первого раза). Как я могу остановить его от прыжков в первый раз?

3 ответа

Решение

Вы можете остановить полное обновление страницы, поместив свой элемент управления в панель обновления.

Задавать Page.MaintainScrollPositionOnPostBack = true сохранить текущую позицию экрана при обратной передаче.

Это проще, чем пытаться сделать это самостоятельно с помощью JavaScript или любым другим способом.

Я знаю, что на этот вопрос ответили, но я не могу использовать ajax для проекта, над которым я работал, у меня была похожая проблема, и я нашел приемлемый обходной путь. У меня есть пользовательский элемент управления на странице, которая также имеет главную страницу. В пользовательском элементе управления есть форма ввода, в нижней части которой есть несколько элементов управления, запускающих обратную передачу. Основной контент div на главной странице делает это для прокрутки (потому что он слишком большой). Решение, которое я нашел, заключалось в настройке фокуса страницы на элемент управления событиями, вызванными обратной передачей в коде позади C#. Например:

protected void cbShip_CheckedChanged(object sender, EventArgs e)    
{
    if (cbShip.Checked)
    {
        pnlShip.Visible = true;
        Page.SetFocus(ddlShipCountry);
    }
    else
    {
        pnlShip.Visible = false;
    }
    return;
}
Другие вопросы по тегам