ASP.NET:Disparar programaticamente um evento do lado do servidor em window.opener com JavaScript
-
15-11-2019 - |
Pergunta
Eu tenho um DropDownList que dispara alguma ligação de dados do lado do servidor em seu evento OnSelectedIndexChanged.
<asp:DropDownList ID="ddlGroup" runat="server"
AutoPostBack="True" OnSelectedIndexChanged="SelectGroup" />
Em outra parte da página, algum JavaScript abre um pop-up.Quando o pop-up for preenchido e enviado, quero usar JavaScript para acioná-lo OnSelectedIndexChanged
evento na página de abertura.Encontrei outro código que faz algo semelhante:
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();
}
Acho que é isso que estou procurando, mas não tenho certeza do que deve constar nas partes EVENTTARGET e EVENTARGUMENT, ou mesmo se preciso delas.Eu quero disparar especificamente o OnSelectedIndexChanged
manipulador de eventos para ddlGroup
.Isso é possível/prático?
Pergunta secundária:Posso atualizar a página pai DEPOIS de executar o código do lado do servidor no pop-up?
Solução
Eh, você poderia fazer dessa maneira, mas eu usaria __doPostback().Isso define __EVENTTARGET e __EVENTARGUMENT para os dois parâmetros e, assumindo que seu primeiro parâmetro seja o UniqueID de um UpdatePanel, faz com que apenas esse UpdatePanel seja atualizado.
Portanto, você pode configurar as coisas para que a atualização do painel de atualização faça o que você deseja que aconteça ou pode verificar esses valores no postback - Request.Form["__EVENTTARGET"]
...e vá de lá.