У меня есть страница с GridView, которая запускает всплывающее окно с использованием Javascript. Затем пользователь выбирает элемент, который обновляет данные, связанные с GridView, и закрывает всплывающее окно.
Как мне обновить первую (то есть страницу вызовов), чтобы я мог обновить данные, отображаемые в моем Gridview?





Попробуйте это внутри своего всплывающего окна:
<script>
window.opener.location.reload()
</script>
Это должно обновить страницу, открывшую всплывающее окно.
Если вам просто нужно запустить обратную передачу на вызывающей странице, это должно сработать:
<script>
window.parent.document.forms[0].submit();
</script>
Явно отправляя форму, вы избегаете предупреждения, которое появляется, если вы просто обновляете вызывающую страницу.
Если вам нужно вызвать событие OnSelectedIndexChanged в GridView во время обратной передачи, тогда все будет немного сложнее, но вы сможете сделать это, вызвав window.parent.document.__doPostBack() с подходящими аргументами.
Вот решение:
Dim CloseScript As String = "<script language='javascript'>function closeWindow(){ window.opener.document.forms[0].submit();window.close();}closeWindow();</script>"
В .NET 2.0 вы должны добавить это на страницу для регистрации выше Javascript:
'register with ClientScript
'The RegisterStartupScript method is also slightly different
'from ASP.NET 1.x
Dim s As Type = Me.[GetType]()
If Not ClientScript.IsClientScriptBlockRegistered(s, "CloseScript") Then
ClientScript.RegisterClientScriptBlock(s, "CloseScript", CloseScript)
End If
Избегает ли это сообщения "страница не может быть обновлена"
window.opener.location = window.opener.location;
(извините, я бы просто оставил комментарий к сообщению TonyB, но у меня недостаточно очков SO, поэтому мне не разрешено ... :(
Это вызывает следующее: --------------------------- Microsoft Internet Explorer --------------- ------------ Страница не может быть обновлена без повторной отправки информации. Нажмите «Повторить», чтобы отправить информацию еще раз, или нажмите «Отмена», чтобы вернуться на страницу, которую вы пытались просмотреть.