Как моя кнопка может закрыть окно и обновить родительский объект после обновления формы? - PullRequest
1 голос
/ 20 августа 2010

У меня есть кнопка «Сохранить» в FormView с установленным CommandName = «Update». Эта кнопка обновляет EntityDataSource, связанный с FormView.

После обновления EDS я хочу закрыть это (дочернее, всплывающее) окно и обновить родительское окно (чтобы оно отражало только что внесенные в данные изменения).

Для справки, у меня есть аналогичная кнопка "Отмена" на этой странице, которая просто вызывает функцию Javascript "OnClientClick":

function done() {
   if (window.opener.closed) {
      self.close();
   } else {
      window.opener.focus();
      window.opener.location.href = opener.location;
      self.close();
   }
}

Теперь, как я могу позволить FormView и EDS сделать свое дело (обработать команду Update), а затем вызвать эту функцию javascript (или код для выполнения эквивалента) ???

После еще нескольких копаний я решил это. Проблема была связана с тем, что FormView находится внутри панели обновления. Я должен был использовать следующее:

ScriptManager.RegisterClientScriptBlock(this.UpdatePanel1, typeof(string), "done", "done();", true);

1 Ответ

0 голосов
/ 20 августа 2010

Как только ваше обновление будет завершено, оно должно вернуть страницу, на которой вы можете просто зарегистрировать свою функцию.В обработчике команды Update (при условии, что это происходит на стороне сервера) просто добавьте следующее:

Page.RegisterStartupScript("AfterUpdate", "done();");

Это приведет к запуску функции javascript done(), как только Windows обновится после обратной передачи.вызвано командой обновления.Если вашей функции done еще нет на странице, убедитесь, что вы добавили ее определение, прежде чем вызывать ее для вызова RegisterStartupScript.

...