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 :

[C#/Visual Studio 2008] Ajout dynamique


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 117
    Par défaut [C#/Visual Studio 2008] Ajout dynamique
    Bonsoir,

    Déjà désolé si je ne suis pas dans le bon forum, je suis un peu perdu avec ce que je fais et je ne sais pas trop où poster (C# ? ASP.NET ? ...)

    Voilà j'ai un projet web à développer en C# avec Visual Studio 2008.

    Ma partie consiste à créer un formulaire pour créer des QCM.

    Le principe est tout con, on saisie le nom du QCM et l'utilisateur a accès à deux bouton : un bouton qui permet de créer des question et un autre à chacune de ces questions qui permet de créer des réponse (pour sa question).

    Ce que je voudrait c'est qu'a chaque clic sur le bouton de question, de nouveau label, text box et bouton avec procédure se créer dynamiquement. Idem pour les réponses. En gros je clic une fois ca me crée ma question 1, je clic une deuxième fois ca me crée ma question 2, je clic une fois sur le bouton de la question 1 ca me crée la première réponse possible, une deuxième fois la seconde réponse possible etc...

    Je pensais faire une div avec un id genre "questionnaire" dans laquelle je créerai une div par question (donc par clic) et partirai sur le même principe pour les réponses.

    Mais voilà, je suis gros débutant en C# et VS 2008 et je n'arrive pas à trouver comment faire pour créer dynamiquement des truc genre "<div></div>" ou encore "<asp:label></asp:label>", "<asp:textbox></asp:textbox>", etc... et les ajouter dans une div de ma page.

    Si vous aviez une réponse cela pourrait m'aider car à moins de mal chercher, je ne trouve pas mon bonheur sur le net.

    Merci d'avance.

    PS : petit ajout par rapport à ce que je demande, je cherche également à ajouter ces composant dynamiquement à la fin d'une div (genre ma div questionnaire) sans effacer ce qui est déjà à l'intérieur de celle-ci. Encore une fois merci d'avance.

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 117
    Par défaut
    Re-bonsoir,

    Bon j'ai en partie réussi à faire ce que je veux, cad créer mes différent textbox, label etc dynamiquement.

    Mais je me retrouve confronté à un autre problème.

    Comme je l'ai, j'ai une div questionnaire, et à chaque clic sur le bouton, je veux ajouter une nouvelle question dans cette div (donc label, textbox etc) tout en gardant la précédente. J'ai réussi à le faire avec C# mais mon problème c'est que le code est éxécuté coté serveur, donc ca me créer une seule question et ca ne garde pas la précédente (ca crée tout le temps la même en fait).

    Pour cela il faudrait que je passe par du javascript, pour créer des champs qui fonctionneront après coté serveur (donc des <asp:label> etc).

    Es-ce possible ?

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 337
    Par défaut
    Utilise un repeater ou une dataList, tu crées un template (label textbox ect... ) et tu y ajoutes un item dès que tu veux ajouter une question.

    bonne continuation.

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 117
    Par défaut
    Merci pour ta réponse.

    Par contre comme j'ai dit je suis vraiment un gros gros débutant la dedans... aurais tu un exemple de comment faire ça ?

    Je cherche en parallèle.

    Merci d'avance.

    EDIT :

    Je viens de rechercher vite fait et dur de trouver comment faire.

    Voilà mon body actuelle...

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:Label ID="lNomQCM" runat="server" Text="Nom du QCM"></asp:Label>
            <asp:TextBox ID="tbNomQCM" runat="server"></asp:TextBox>
        </div>
        <div id="questionnaire" runat="server">
            <asp:Repeater ID="Repeater1" runat="server">
                <ItemTemplate>
                    <div>
                        <div>
                            <asp:Label ID="Label1" runat="server" Text="Intitulé de la question n°1"></asp:Label>
                            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                            <asp:Label ID="Label2" runat="server" Text="Points (réponse correcte)"></asp:Label>
                            <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
                            <asp:Label ID="Label3" runat="server" Text="Points (réponse incorrecte)"></asp:Label>
                            <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
                        </div>
                        <div>
                            <div>
                                <asp:Label ID="Label4" runat="server" Text="Réponse n°1"></asp:Label>
                                <asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
                                <asp:CheckBox ID="CheckBox1" runat="server" />
                            </div>
                        </div>
                        <div>
                            <asp:Button ID="Button1" runat="server" Text="Ajouter une réponse" />
                        </div>
                    </div>
                </ItemTemplate>
            </asp:Repeater>
        </div>
        <div>
            <asp:Button ID="bAddQuestion" runat="server" Text="Ajouter une question" 
                onclick="bAddQuestion_Click" />
        </div>
        </form>
    </body>
    Je recherche comment faire les ajout avec les bouton. Mais déjà, suis-je bien partie ?

    EDIT 2 :

    J'ai trouver un bout de réponse sur le net...

    Pour le moment j'ai ça...

    Dans mon .aspx :

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:Label ID="lNomQCM" runat="server" Text="Nom du QCM"></asp:Label>
            <asp:TextBox ID="tbNomQCM" runat="server"></asp:TextBox>
        </div>
        <div id="questionnaire" runat="server">
            <asp:Repeater ID="Repeater1" runat="server">
                <ItemTemplate>
                    <div>
                        <div>
                            <asp:Label ID="lIntituleQ" runat="server" Text="Question n°1"></asp:Label>
                            <asp:TextBox ID="tbIntituleQ" runat="server"></asp:TextBox>
                            <asp:Label ID="lCorrectQ" runat="server" Text="Points (réponse correcte)"></asp:Label>
                            <asp:TextBox ID="tbCorrectQ" runat="server"></asp:TextBox>
                            <asp:Label ID="lIncorrectQ" runat="server" Text="Points (réponse incorrecte)"></asp:Label>
                            <asp:TextBox ID="tbIncorrectQ" runat="server"></asp:TextBox>
                        </div>
                        <div>
                            <div>
                                <asp:Label ID="lQR" runat="server" Text="Réponse n°1"></asp:Label>
                                <asp:TextBox ID="tbQR" runat="server"></asp:TextBox>
                                <asp:CheckBox ID="cbQR" runat="server" />
                            </div>
                        </div>
                        <div>
                            <asp:Button ID="bAddReponseQ" runat="server" Text="Ajouter une réponse" />
                        </div>
                    </div>
                </ItemTemplate>
            </asp:Repeater>
        </div>
        <div>
            <asp:Button ID="bAddQuestion" runat="server" Text="Ajouter une question" 
                onclick="addQuestion" />
        </div>
        </form>
    </body>
    Dans mon .aspx.cs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    int nbQuestion = 1;
     
            protected void addQuestion(object sender, EventArgs e)
            {
                IEnumerable dataRepeater = Enumerable.Range(1,nbQuestion);
     
                nbQuestion = nbQuestion + 1;
     
                Repeater1.DataSource = dataRepeater;
                Repeater1.DataBind();
            }
    Mon problème est le même, le template est répété une seule fois. Je n'ai pas trouver comment en ajouter plusieurs.

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 337
    Par défaut
    Le mieux est d'utiliser une source de donnée datatable ou une list d'objet générique tu utilise la propriété dataSource du repeater.
    Ensuite pour ajouter une question il te suffira d'ajouter une ligne a la datatable ou un objet dans ta lsite. et de rebind sur le repeater (enfin c'est comme ca que je le ferais).
    Une question ton questionnaire tu l'enregistre dans une base de donnée? fichier xml?

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 117
    Par défaut
    Oula c'est vraiment chaud à comprendre

    Sinon oui, je crée des questionnaires de façon variable (autant de questions que l'utilisateur veut et autant de réponse par question qu'il souhaite) et par la suite, il l'enregistre dans une base de données SQL Server.

    Mais j'ai pas encore attaqué la partie la partie base de données je bloque sur mes ajouts de questions/réponses.

    Par hasard tu aurais pas un bout de code que tu pourrait me montré ? Je demande pas qu'on me fasse le projet mais un bout de code du principe que tu annonce m'aiderait à comprendre comment faire.

    Merci d'avance.

  7. #7
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 337
    Par défaut
    Je te conseille fortement de faire une analyse et de créer ta base de donnée avant car les questions seront des enregistrements dans ta base de donnée et ils serviront à alimenter ton repeater.

    Une fois la base de donnée créée, tu aura certainement une table QUESTIONS(Id,Intitule , ...), tu chargeras les donnée dans une datatable que tu utilisera pour alimenter ton Repeater (repeater1.DataSource = maDataTableQuestion) rien de très méchant.

    jette un coup d'oeil ICI et fait la même chose sauf à la place d'une balise hyperlink tu met une balise textBox.

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 117
    Par défaut
    Oh en fait la base est déjà fait. On travail en groupe et c'est le premier truc qui a été fait. Quand je dit que je me suis pas encore occupé de cette partie c'est la partie connexion et enregistrement dans la BDD via VS2008.

    Mais d'après ce que je comprend (reprend moi si je me trompe) c'est que chaque clic sur un bouton entraine un enregistrement dans la base de donnée et un ré affichage après de tout ce qui a été enregistré après ?

  9. #9
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 117
    Par défaut
    Bonsoir,

    Bon en fait j'ai résolu le problème des ajouts de question (pas encore pour les réponses).

    Étant un peu chaud niveau timing, j'ai laissé tombé les histoires de repeater et template et suis passé par une autre méthode par forcément très propres mais qui marche.

    Pour le moment je crée un variable de session qui contient le nombre de questions et je crée mon formulaire à partir de ce chiffre. Et ca marche pour le moment.

    Maintenant ma question est peut-être plus simple : au fur et a mesure, je crée des label, textbox etc qui on des nom variable. Par exemple on va dire que je vais avoir un textbox qui va s'appelé tbQ1, tbQ2, tbQ3 etc... comment récupérer les valeur de ces textbox dans un for avec un truc du genre tbQ + i (ou pour résumé comment récupérer la valeur d'un champ créé dynamiquement) ?

    Merci d'avance.

  10. #10
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 337
    Par défaut
    Utilise la method FindControl(ID)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for(int i = 1; i<= nbQuetion; i++)
    {
     TextBox t = (TextBox)This.MaForm.FindControl("tbQ" + i.ToString)
     string maQuestion = t.Text;
    }
    Je pense que c'est celà dont tu as besoin....

    Bonne continuation.

  11. #11
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 117
    Par défaut
    Avec un peu de retard merci pour tes réponses.

    J'ai réussi à faire ce que je voulais.

    Un grand merci

  12. #12
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 337
    Par défaut
    Mais de rien!

    Bon développement à bientôt.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 05/01/2019, 23h25
  2. [Débutant] [Visual studio 2008]Combobox dynamiques
    Par Mykimix dans le forum Visual Studio
    Réponses: 2
    Dernier message: 18/09/2012, 09h17
  3. visual studio 2008 : ajouter un type de variable
    Par mumuri dans le forum Visual C++
    Réponses: 0
    Dernier message: 09/07/2010, 18h02
  4. [Visual Studio 2008] Ajouter un projet dans un dossier
    Par Sancha dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 27/01/2010, 13h24
  5. Ajouter une refrence dans Visual studio 2008
    Par aallal dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 29/09/2008, 12h51

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