locked
Comment envoyer des données dans la fenêtre principale et faire postback RRS feed

  • Discussion générale

  • Dans certains cas, in a besoin d’ouvrir une nouvelle fenêtre, de remplir les informations et de les envoyer à la fenêtre principale, pour être prises en charge.

     

    Le problème qui s’impose est comment envoyer les données et comment déterminer le postback de la fenêtre principale des que les champs visées ont été remplis.

     

    Pour exemplifier, on fait une application web avec deux pages : Default.aspx et popup.aspx.

     

    Sur la page Default.aspx on met un bouton « Button1 », un linkbutton « LinkButton1 » et un textbox txtPopupValue :

    <asp:Button ID="Button1" runat="server" Text="Button1" />
    <asp:TextBox ID="txtPopupValue" runat="server"  AutoPostBack="True" ></asp:TextBox>
    <asp:LinkButton ID="LinkButton1" runat="server">LinkButton</asp:LinkButton>

     

     

    On crée une fonction java script OpenPopup() pour ouvrir la fenêtre popup.aspx:

     

    <script type="text/javascript">
    function OpenPopup() {    
        window.open('popup.aspx');
        return false;
    }
     
    function doPB(){
        __doPostBack(); 
       }
    </script>

     

    On a créé aussi la fonction doPB() qui sera appelée dans la fenêtre popup.aspx pour faire le postback de la fenêtre principale.

     

    Dans la partie de code on ajoute l’évènement onclick sur le bouton :

     

    protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    this.Button1.Attributes.Add("onclick", "javascript:return OpenPopup()");
                }
            }

     

    La page popup.aspx sera ouverte quand l’utilisateur exécute un clic sur le bouton Button1.

     

    Maintenant on va faire les  modifications nécessaires dans la page popup.aspx.

     

    On ajoute un bouton Button1 et un textbox TextBox1 sur la page :

     

    <asp:Button ID="Button1" runat="server" Text="Button" />
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

     

    On ajoute aussi une fonction java script pour appeler le postback de la page principale et pour fermer la page popup.aspx :

     

    function CloseMe()
    { 
    //transférer la valeur du champ texte de la fenêtre enfant vers le champ texte de la fenêtre parent
    window.opener.document.getElementById("txtPopupValue").value = window.document.getElementById("TextBox1").value;
        window.opener.doPB();     
        window.close();
    }

     

    Dans la méthode Page_Load on ajoute cette fonction sur l’évènement onclick du bouton Button1 :

    protected void Page_Load(object sender, EventArgs e)
            {
                if (!Page.IsPostBack)
                {
                    this.Button1.Attributes.Add("onclick", "javascript:CloseMe()");
                }
            }

     

    Quand l’utilisateur effectue un clic sur le bouton de la page enfant, les valeurs du textbox sont transférées dans le textbox de la page principale et un postback est lancé aussi.

     

    Pour plusieurs informations, visitez la page Foire aux Questions – ASP.NET


    Alex Petrescu - MSFT
    jeudi 25 mars 2010 11:21
    Modérateur