none
Passer les paramètres d'une fenetre modale à la page aspx appelante RRS feed

  • Question

  • Bonjour à tous,
    j'ai un problème sur lequel je galère concernant le choix d'une image par l'utilisateur.
    Le principe est le suivant: j'ai un champ image dans une page aspx avec un bouton placé à côté.
    Lorsque l'utilisateur clique sur ce bouton, je voudrais afficher une fenêtre modale dans laquelle est placé un contrôle input file.
    L'utilisateur clique sur un bouton "upload" puis je récupère le chemin de l'image pour le stocker en base et je copie l'image sur le serveur.
    Le mécanisme d'upload du fichier et de sauvegarde en BDD du chemin est résolue. J'ai à présent 2 problèmes:

    Problème 1:
    je voudrais rafraichir ma page aspx une fois que la fenêtre modale se ferme: je n'y arrive pas: en fait, je crois que si j'arrivais à passer une donnée de ma fenêtre modale à la fenêtre appelante (dans un champ avec un postback, par ex), je pourrais résoudre mon problème, mais je coince là dessus.

    Problème 2:
    Je n'arrive pas à faire une "vraie" fenêtre modale: la fenêtre s'affiche, mais qd je clique sur "upload", la fenêtre modale, au lieu de se fermer est à nouveau ouverte

    Voici le code que j'ai mis pour l'appel de ma fenêtre modale (donc pour charger l'image):
        protected void ImportImage01_Click(object sender, ImageClickEventArgs e)
        {
            StringBuilder scriptFunction;
            scriptFunction = new StringBuilder();
                  scriptFunction.Append("test = window.open('../upload_file.aspx',");
            scriptFunction.Append("'',");
            scriptFunction.Append("'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=auto,resizable=no,copyhistory=yes,alwaysRaised=yes,dependent=yes,height=200px ,width=700px')");
            
            ScriptManager.RegisterClientScriptBlock(this.Page, this.Page.GetType(), "Upload File", scriptFunction.ToString(), true);
    
    }
    Comment puis je avoir tout d'abord une vraie fenêtre modale, et puis comment rafraichir ma fenêtre "maitre" une fois que la fenêtre modale est fermée?
    Merci beaucoup de vos pistes et de votre aide.

    Damien
    jeudi 18 mars 2010 19:18

Réponses

Toutes les réponses

  • Bonjour,

     

    Je vous propose ces ressources pour votre problème :

    Comment créer une fenêtre modale

     

    Comment accéder aux contrôles de la page précédente

    http://msdn.microsoft.com/fr-fr/library/system.web.ui.page.previouspage.aspx

     

    Vous pouvez passer des donnes à la fenêtre antérieure en utilisant les instructions du deuxième lien. Ça pourrait être la solution de votre problème.

     

    Cordialement,

    Alex


    Alex Petrescu - MSFT
    • Marqué comme réponse Alex Petrescu mercredi 24 mars 2010 10:52
    lundi 22 mars 2010 10:57
  • Bonjour,

    Merci beaucoup pour ces liens qui m'ont bien aidé, maintenant, j'appelle ma fenêtre modale, je charge le chemin de mon fichier et je le passe de ma fenêtre modale à ma page aspx appelante. Je mets à jour un hidden field pour récupérer cette valeur, et là, j'ai un autre problème: ma page aspx n'est pas appelée. J'ai pourtant mis un évenement OnValueChanged, mais il ne shoote pas. Ya-t'il une solution "propre" pour recharger ma page aspx dès que ce champ est mis à jour? (Actuellement, le contournement que j'ai choisi est d'appeler l'évènement click d'un bouton que je rend "invisible" en le "camouflant avec le décor";  la property visible=false faisant un plantage js)

    Merci d'avance de votre aide


    Damien
    mercredi 24 mars 2010 11:29
  • Bonjour,

    Voici la solution que je vous propose :

     

    Dans la page modale vous ajoutez cette fonction Java :

    <script type="text/javascript">
    function GetValue(){
    //on transfere la valeur du textbox de la fenetre modale dans le textbox de la fenetre principale
    window.opener.document.getElementById("txtPopupValue").value = window.document.getElementById("TextBox1").value;    
    //on appellee la methode doPB() de la fenetre principale, qui fera __doPostBack()
    window.opener.doPB();
     
    //on ferme la fenetre modale
    window.close();
    }

     

     

    doPB() est une function qu’on va definir dans la page principale.

     

    Dans la partie de code de la page modale on ajoute l’evenement onclick pour le bouton de submit :

    protected void Page_Load(object sender, EventArgs e)
    {
    if(!page.IsPostBack)
    {
    this.Button1.Attributes.Add(“onclick”, “javascript:GetValue()”); 
    }
    }

     

    Dans la page principale on ajoute ce code et un bouton LinkButton:

    <script type="text/javascript">
    function doPB(){
    __doPostBack() ;
    }
     
    Alex Petrescu - MSFT
    jeudi 25 mars 2010 10:33