Ajax включен индикатор выполнения обновления на server.transfer - PullRequest
0 голосов
/ 27 марта 2012

У меня есть веб-страница, к которой я применяю Ajax активированный индикатор обновления на кнопке отправки. В этом нажатии кнопки отправки я делаю некоторые операции с базой данных, и если операции Успешно, то страница переходит на server.transfer на другую страницу.

Моя проблема в том, что мне нужно реализовать индикатор прогресса на этой кнопке отправки и странице следует перенаправить на другую страницу. Но я получаю page request manager exception on server .transfer. Я не могу использовать response.redirect из-за некоторых функций безопасности, пожалуйста, дайте мне решение или обходной путь, чтобы избежать исключения менеджера запросов страниц.

Ответы [ 2 ]

0 голосов
/ 29 марта 2012

Спасибо за ваш ответ, вы дали хорошее предложение, я также нашел решение для этой проблемы, которым я хочу поделиться, оно отлично работало для меня. Потому что моя проблема заключается в поддержании скрытых переменных и в server.transferпоэтому я поставил свой код так.Я поместил 2 кнопки, одну внутри панели обновлений, а другую - за пределами панели обновлений, поэтому, когда внутри кнопки панели обновления будет срабатывать событие нажатия, она будет выполнять операции с базой данных, а после успешных операций с БД она будет вызывать функцию java-скрипта со стороны сервера, например * 1001.*

protected void btnProceed_Click(object sender, EventArgs e)
    {
     //do your db operations
     //After successful operations call java script

      ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "displayNote","   <script language='JavaScript'>onAsyncPostclick();</script>", false);

}

Код Java-сценария

<script type="text/javascript" language="javascript">
//ToDo: Used to call button on which we fire server.transfer
      function onAsyncPostclick() {
      var btnName = $get("<%=btnPostBack.ClientID%>").name;
      __doPostBack(btnName, "");
    }
</script>

В этом коде JavaScript я отправил обратный вызов другой кнопке, которая находится за пределами панели обновления и в событии нажатия этой кнопкиЯ запускаю сервер .Transfer на новую страницу, как это

    //Implemented for button Submit (outside of Update panel) click
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        Server.Transfer("NewPage.aspx");
    }

Вышеописанным способом я могу вызвать server.transfer при нажатии обратной передачи с поддержкой ajax, и я сохранил свой код из исключения диспетчера запросов страниц. Я думаю, что этоОбойти проблему, но она отлично подходит для моих требований.

0 голосов
/ 28 марта 2012

Согласно моему комментарию выше, вы не можете изменять страницы внутри постбэка AJAX. Вместо этого вам придется дождаться завершения запроса AJAX, на который вы можете отослать результаты об успешном / неудачном выполнении вашей опции базы данных. Используя только API-интерфейс клиента, предоставляемый ScriptManager, вы можете использовать следующий скрипт:

<script type="text/javascript">
<!--
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(EndRequest);
function EndRequest(sender, args) {
    // TODO: Validate args indicates success.
    var isSuccess = true;
    if (isSuccess)
        window.location = "SecondPage.aspx";
}
// -->
</script>

Поместите этот скрипт непосредственно после объявления ScriptManager, измените его в соответствии с вашими потребностями для подтверждения успеха и перейдите на нужную страницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...