ASP.NET :Déclenchez par programme un événement côté serveur dans window.opener avec JavaScript

StackOverflow https://stackoverflow.com/questions/5043866

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 ?

Était-ce utile?

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à.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top