RowCommand GridView - обнаружение обновления страницы, а не повторное выполнение - PullRequest
0 голосов
/ 07 июня 2011

У меня есть GridView, в котором есть событие RowCommand, открывающее modalpopupextender по щелчку. Небольшая проблема заключается в том, что если пользователь открывает и закрывает модальное всплывающее окно, а затем обновляет страницу, всплывающее окно снова всплывает - предположительно, потому что обновление вызывает обновление события RowCommand.

Как я могу обнаружить это и не открывать окно снова?

РЕДАКТИРОВАТЬ: я использую AJAX Toolkit, и модальное всплывающее окно на стороне клиента, но вызывается из события RowCommand

Ответы [ 2 ]

0 голосов
/ 07 июня 2011

Ваша проблема с обновлением или (F5). Так что вам нужно определить, является ли это обновление или просто нормальный пост обратно.

Попробуйте это :

  window.onbeforeunload = function (evt) {
  var message = 'Are you sure you want to leave?';
  if (typeof evt == 'undefined') {
    evt = window.event;
  }
  if (evt) {
    evt.returnValue = message;
  }
  return message;
}

Это захватит обновление, что позволит вам показать сообщение об этом.


Другие ссылки, которые будут вам полезны:

- проблема asp.net с F5 после обратной передачи, потому что он делает то, что должен

- C # подтвердить повтор последнего постбека при нажатии Обновить (F5)

- Обнаружение обновления или отправки обратно в ASP.NET

0 голосов
/ 07 июня 2011

Если перезагрузка снова запускает событие rowcommand, похоже, вы используете параметры get?В общем, вам нужно будет отслеживать ответы от / к клиенту и решать для каждого ответа индивидуально, как его обработать.Один из способов архивирования:

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

Зарегистрируйте счетчик в коллекции на сервере, а также отправьте его в скрытой переменной клиенту.Если поступает обратный ответ, прочитайте значение его счетчика и проверьте, принадлежит ли он ответу, который уже использовался ранее.Это отметит ситуацию, которую вы описали (пользователь перезагружается).

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