ASP.NET :Déclenchez par programme un événement côté serveur dans window.opener avec JavaScript
-
15-11-2019 - |
Question
J'ai une DropDownList qui déclenche une liaison de données côté serveur dans son événement OnSelectedIndexChanged.
<asp:DropDownList ID="ddlGroup" runat="server"
AutoPostBack="True" OnSelectedIndexChanged="SelectGroup" />
Ailleurs dans la page, du JavaScript ouvre une popup.Lorsque la fenêtre contextuelle est remplie et soumise, je souhaite utiliser JavaScript pour la déclencher. OnSelectedIndexChanged
événement dans la page d’ouverture.J'ai trouvé un autre code qui fait quelque chose de similaire :
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();
}
Je pense que c'est ce que je recherche, mais je ne suis pas sûr de ce qui devrait figurer dans les parties EVENTTARGET et EVENTARGUMENT, ni même si j'en ai besoin.Je veux spécifiquement tirer le OnSelectedIndexChanged
gestionnaire d'événements pour ddlGroup
.Est-ce possible/pratique ?
Question secondaire :Puis-je actualiser la page parent APRÈS avoir exécuté le code côté serveur dans la fenêtre contextuelle ?
La solution
Eh, vous pourriez le faire de cette façon, mais j'utiliserais simplement __doPostback() à la place.Cela définit __EVENTTARGET et __EVENTARGUMENT sur les deux paramètres, et en supposant que votre premier paramètre est l'UniqueID d'un UpdatePanel, cela provoque l'actualisation de ce UpdatePanel.
Donc, soit vous pouvez configurer les choses pour que l'actualisation du panneau de mise à jour fasse ce que vous voulez, soit vous pouvez vérifier ces valeurs lors de la publication -- Request.Form["__EVENTTARGET"]
...et partez de là.