IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

champs de formulaire dynamiques


Sujet :

ASP.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 28
    Par défaut champs de formulaire dynamiques
    Bonjour,
    j'ai créé un panel dans lequel j'ajoute des champs de formulaire dynamiquement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    <asp:Panel ID="PanelChampForm" CssClass="DivPopUp2" Width="500px" runat="server" Visible="false">
                    <asp:ImageButton ID="ImageCloseChampForm" ImageUrl="~/img/x.gif" runat="server" Style="float: right;" OnClick="ImageCloseChampForm_Click" />
                    <asp:Label ID="lblTitreChampForm" runat="server" Style="font-size: 15px; font-weight: 900; color: #FF9A00; padding-left:160px;" Text="Gestion Champs Formulaire"></asp:Label>
                    <br class="clear" />
     
                    <asp:LinkButton ID="linkAddChamp" runat="server" OnClick="AddChamp_Click" Style="text-decoration: none; color: #000; padding-left:190px;">Ajouter un champ : 
                        <asp:Image runat="server" ID="imgAddChamp" ImageUrl="~/img/+_bb.gif" />
                    </asp:LinkButton>   
                    <br />
     
                    <asp:HiddenField ID="hiddenNbChamps" runat="server" />                        
     
                    <div id="divChampsAjoutes" style="padding-left:200px;" runat="server">                        
                    </div>               
     
                     <br />      
                     <asp:ImageButton ID="imgbValiderChampForm" ImageUrl="~/img/Valider_bb.jpg" runat="server" style="padding-left:220px;" OnClick="ValiderChampForm_Click" />   
     
                </asp:Panel>
    Lors du chargement du panel, la méthode LoadChampFormExistant est appelé pour construire des champs input.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    protected void LoadChampFormExistant()
            {
                int champs_count = 0;
     
                //on ajoute les input si ChampsFormulaire != ""
                if (tbChampsFormulaire.Text != "")
                {
                    //on parse les differents champs
                    string[] listChamps = tbChampsFormulaire.Text.Split(';');
     
                    foreach (string elt in listChamps)
                    {
                        champs_count++;
     
                        //on creer les input
                        divChampsAjoutes.InnerHtml += "<br/><input type=\"text\" name=\"tbChampAdd_" + champs_count + "\" value=\"" + elt + "\" class=\"champs\"/><br/>";
                    }
                }
     
                if (champs_count > 0)
                    imgbValiderChampForm.Visible = true;
     
                hiddenNbChamps.Value = champs_count.ToString();           
            }
    Ensuite, lorsque j'appuie sur le bouton pour ajouter un champ, la méthode AddChamp_Click est appelée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    protected void AddChamp_Click(object sender, EventArgs e)
            {
     
     
                int champs_count = Convert.ToInt32(hiddenNbChamps.Value);
     
                champs_count++;
     
                divChampsAjoutes.InnerHtml += "<br/><input type=\"text\" name=\"tbChampAdd_" + champs_count + "\" class=\"champs\" /><br/>";            
     
     
                hiddenNbChamps.Value = champs_count.ToString();            
     
                imgbValiderChampForm.Visible = true;
            }
    Lors de l'appui sur ajouter, un input est ajouté au panel, je le remplis.
    Lors du second appui, un second input est créé mais la valeur que j'avais saisie dans le premier à disparue.

    Ma question, comment sauvegarder les valeurs des inputs à chaque appui sur ajouter.

    J'espère que mes explications sont claires.

    Merci d'avance.

  2. #2
    Membre émérite Avatar de bizet
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2005
    Messages
    717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 717
    Par défaut
    salut

    solution : utilisez de l'ajax et le updatePanel.

    Sinon il faut que lors de l'appel a la fonction ADD tu sauvegardes l'ensemble de tes valeurs avant de les réassigner...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 28
    Par défaut
    j'ai fait un update panel comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    <asp:UpdatePanel ID="updpanel1" runat="server">
            <ContentTemplate>            
     
                <asp:Button ID="addbutton" runat="server" Text="Add" OnClick="AddChamp" />
     
                <asp:HiddenField ID="Hiddennb_champs" runat="server" Value="0" />
            </ContentTemplate>        
            </asp:UpdatePanel>
    Et lorsque j'appuie sur Add, la méthode suivante est appelée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    protected void AddChamp(object sender, EventArgs e)
        {
            int nb_champs = Convert.ToInt32(Hiddennb_champs.Value);
            nb_champs++;
     
            TextBox tb = new TextBox();
            tb.ID = "tb_" + nb_champs;
            updpanel1.ContentTemplateContainer.Controls.Add(tb);
            Hiddennb_champs.Value = nb_champs.ToString();
     
     
        }
    Lorsque j'appuie sur add, une textbox est ajoutée, par contre, si j'appuie une 2 eme fois, la précédente textbox n'est pas sauvegardée.

    Je ne sais pas comment sauvegarder les textbox ajoutées dynamiquement.
    Merci d'avance pour votre aide.

Discussions similaires

  1. [2.x] Champ de formulaire dynamique avec entités
    Par thomm543 dans le forum Symfony
    Réponses: 0
    Dernier message: 30/10/2012, 17h21
  2. champs de formulaire dynamique
    Par julian1976 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 01/07/2011, 10h21
  3. Ajout de champs de formulaire dynamique
    Par hash95 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 14/01/2008, 17h39
  4. Récupérer valeur champs de formulaire dynamique
    Par antillejj dans le forum ASP
    Réponses: 1
    Dernier message: 22/12/2006, 07h17
  5. nom d'un champs de formulaire dynamique
    Par wil4linux dans le forum ASP
    Réponses: 2
    Dernier message: 22/09/2005, 17h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo