АСП.НЕТ:Программно запустить событие на стороне сервера в window.opener с помощью JavaScript
-
15-11-2019 - |
Вопрос
У меня есть DropDownList, который запускает некоторую привязку данных на стороне сервера в событии OnSelectedIndexChanged.
<asp:DropDownList ID="ddlGroup" runat="server"
AutoPostBack="True" OnSelectedIndexChanged="SelectGroup" />
В другом месте страницы JavaScript открывает всплывающее окно.Когда всплывающее окно заполнено и отправлено, я хочу использовать JavaScript для его запуска. OnSelectedIndexChanged
событие на первой странице.Я нашел другой код, который делает что-то подобное:
if (window.opener != null ) {
var cf = window.opener.document.forms['aspnetForm'];
if (!cf) {
cf = window.opener.document.aspnetForm;
}
cf.__EVENTTARGET.value = "prAdded";
cf.__EVENTARGUMENT.value = "winClosed";
cf.submit();
}
Я думаю, что это то, что я ищу, но я не уверен, что должно быть в частях EVENTTARGET и EVENTARGUMENT, и нужны ли они мне вообще.Я хочу специально уволить OnSelectedIndexChanged
обработчик событий для ddlGroup
.Возможно ли это/практично?
Второстепенный вопрос:Могу ли я обновить родительскую страницу ПОСЛЕ запуска серверного кода во всплывающем окне?
Решение
Да, вы могли бы сделать это и так, но я бы вместо этого использовал __doPostback().Это задает для __EVENTTARGET и __EVENTARGUMENT два параметра, и если предположить, что вашим первым параметром является UniqueID UpdatePanel, это приведет к обновлению только этой UpdatePanel.
Таким образом, вы можете либо настроить так, чтобы обновление панели обновлений выполняло то, что вы хотите, либо вы можете проверить эти значения при обратной передаче - Request.Form["__EVENTTARGET"]
...и идти оттуда.