ASP.NET Обновление одного окна из другого

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

Как мне обновить первую (т. е. страницу вызова), чтобы я мог обновить данные, отображаемые в моем Gridview?


person David Smit    schedule 06.11.2008    source источник


Ответы (4)


Попробуйте это внутри своего всплывающего окна:

<script>
window.opener.location.reload()
</script>

Это должно обновить страницу, которая открыла всплывающее окно.

person TonyB    schedule 06.11.2008
comment
Это приводит к следующему: --------------------------- Microsoft Internet Explorer --------------- ------------ Страница не может быть обновлена ​​без повторной отправки информации. Нажмите «Повторить», чтобы отправить информацию еще раз, или «Отмена», чтобы вернуться на страницу, которую вы пытались просмотреть. - person David Smit; 07.11.2008

Если вам просто нужно вызвать обратную передачу на вызывающей странице, это должно работать:

<script>
window.parent.document.forms[0].submit();
</script>

Явно отправляя форму, вы избегаете предупреждения, которое появляется, если вы просто обновляете вызывающую страницу.

Если вам нужно инициировать событие OnSelectedIndexChanged в GridView во время обратной передачи, то все немного сложнее, но вы сможете сделать это, вызвав window.parent.document.__doPostBack() с подходящими аргументами.

person stevemegson    schedule 06.11.2008

Вот решение:

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
person Community    schedule 11.11.2008

Избегает ли это сообщения «страница не может быть обновлена»

window.opener.location = window.opener.location;

(извините, я бы просто оставил комментарий к сообщению TonyB, но у меня недостаточно баллов SO, поэтому мне нельзя... :(

person Justin    schedule 19.05.2010