ASP.NET:Programmgesteuertes Auslösen eines serverseitigen Ereignisses im Fenster.öffner mit JavaScript

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

Frage

Ich habe eine Dropdown-Liste, die eine serverseitige Datenbindung in ihrem Ereignis OnSelectedIndexChanged auslöst.

<asp:DropDownList ID="ddlGroup" runat="server" 
     AutoPostBack="True" OnSelectedIndexChanged="SelectGroup" />

An anderer Stelle auf der Seite öffnet JavaScript ein Popup.Wenn das Popup ausgefüllt und gesendet wird, möchte ich JavaScript verwenden, um das auszulösen OnSelectedIndexChanged ereignis auf der Eröffnungsseite.Ich habe einen anderen Code gefunden, der etwas Ähnliches macht:

    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(); 
    }

Ich denke, das ist es, wonach ich suche, aber ich bin mir nicht sicher, was in den EVENTTARGET- und EVENTARGUMENT-Teilen enthalten sein soll oder ob ich diese überhaupt brauche.Ich möchte speziell das feuern OnSelectedIndexChanged ereignisbehandler für ddlGroup.Ist das möglich / praktisch?

Sekundäre Frage:Kann ich die übergeordnete Seite aktualisieren, NACHDEM ich serverseitigen Code im Popup ausgeführt habe?

War es hilfreich?

Lösung

Eh, du könntest es so machen, aber ich würde stattdessen einfach __doPostBack() verwenden.Das setzt __EVENTTARGET und __EVENTARGUMENT auf die beiden Parameter, und vorausgesetzt, Ihr erster Parameter ist die eindeutige ID eines UpdatePanels, wird nur dieses UpdatePanel aktualisiert.

Entweder können Sie die Dinge so einrichten, dass das Aktualisieren des Updatepanels das tut, was Sie möchten, oder Sie können diese Werte beim Postback überprüfen -- Request.Form["__EVENTTARGET"] ...und gehen Sie von dort aus.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top