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

Windows Forms Discussion :

DataGridView et Ajout de ligne [Débutant]


Sujet :

Windows Forms

  1. #1
    Membre éprouvé Avatar de shaun_the_sheep
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2004
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 619
    Points : 996
    Points
    996
    Par défaut DataGridView et Ajout de ligne
    Bonjour,

    j'ai une datagrid que j'alimente comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
               dataGridParticipantVaccin.AutoGenerateColumns = False
                dataGridParticipantVaccin.DataSource = vaccination_participant();
    Avec vaccination_participant qui est une méthode de classe qui représente une liste d’objet métier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private List<VaccinsParticipant> liste_Vaccins_Participants;
    cette liste est alimente d'objet VaccinsParticipant , dont les données viennent qu'une requete SQL.

    Ma datagrid est alimentée.

    Maintenant dans cette DataGrid j'aimerai pouvoir ajouter des lignes en saisie.

    Je ne trouve pas de solution.

    Quelqu'un peut il m'aider ?

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    j'aimerai pouvoir ajouter des lignes en saisie.
    Quelle est le mode de saisie souhaité ?
    1) Saisie directe dans le DataGridView
    2) saisie dans une forme dédiée activée par un bouton "Ajouter enregistrement".

    Je déconseille vivement l'option 1) en raison de la difficulté à gérer correctement le processus de validation de la ligne saisie.

    Si on prend l'option 2), à la validation de la saisie du nouvel enregisrement dans la forme dédiée, le simple fait d'ajouter un item au Data Sourde (c-à-d à la liste sousjacente) suffira à faire apparaître le nouvel enregistrement dans le DataGridView.
    Lors du processus de validation, on peut évidement mettre aussi à jour la base de donnée via une requête SQL INSERT.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    Membre éprouvé Avatar de shaun_the_sheep
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2004
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 619
    Points : 996
    Points
    996
    Par défaut
    bonjour,

    j'aimerai que cette saisie se fasse directement dans la datagrid ,seulement après qu'elle soit alimentée par les valeurs de ma base suivant ma méthode décrite au dessus, impossible d'ajouter une nouvelle ligne dans ma datagrid..... elle est comme en lecture.

    Je rappelle que je ne suis pas lié directement à ma base, mais que je passe par un objet "métier".

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 004
    Points : 5 423
    Points
    5 423
    Par défaut
    Est-ce que l'option AllowUserToAddLine est à true?

  5. #5
    Membre éprouvé Avatar de shaun_the_sheep
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2004
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 619
    Points : 996
    Points
    996
    Par défaut
    j'ai pas cette option, mais j'ai :

    AllowUserToaddRows à True
    AllowUserToDeleteRows à True

    Merci à vous

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 004
    Points : 5 423
    Points
    5 423
    Par défaut
    Oui pardon c'est bien addRow et pas line .

    Sinon j'ai une question concernant vaccination_participant();
    C'est bien une collection "collective"( pas mal celle- la^^) à toute la classe qui est retourné? Et pas une collection local à la méthode?

  7. #7
    Membre éprouvé Avatar de shaun_the_sheep
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2004
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 619
    Points : 996
    Points
    996
    Par défaut
    voici comment c'est déclaré :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    namespace ACT.EcranInfirmerie
    {
        public partial class Ecran_Dossier_Medical : Form
        {
            private OracleConnection OraCon;
            private string student_no;
            
            private List<Vaccins> liste_Vaccins;
            private List<VaccinsParticipant> liste_Vaccins_Participants;
    .....

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 004
    Points : 5 423
    Points
    5 423
    Par défaut
    Le soucis c'est au niveau de la grille : impossible de faire une nouvelle saisie? Ou au niveau de la collection, malgré une nouvelle saisie, il n'y a pas de nouvel enregistrement?

  9. #9
    Membre éprouvé Avatar de shaun_the_sheep
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2004
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 619
    Points : 996
    Points
    996
    Par défaut
    c'est la datagrid qui reste en mode "affichage" ... impossible d'ajouter une nouvelle ligne ... comme si je devais ajouter ma ligne en passant par la source.

    Je vais opter pour la méthode n°2 proposée .... ma datagrid ne comporte que trois colonnes, une liste , un entier et une date donc c'est gérable.

  10. #10
    Expert confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 004
    Points : 5 423
    Points
    5 423
    Par défaut
    Tu peux passer par un BindingSource, ou bien transformer ta liste de départ en BindingList.


    Si tu choisis le BindingSource, au lieu de faire DataGridView.Source=TaSource, tu fais BindingSource.Source=TaSource.

  11. #11
    Membre éprouvé Avatar de shaun_the_sheep
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2004
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 619
    Points : 996
    Points
    996
    Par défaut
    Je vais faire quelque chose dans ce sens dans un bouton ajouter avec des champs au dessus ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ....
                //maj de la liste
                liste_Vaccins_Participants.Add(new VaccinsParticipant(vaccin, 5, DateTime.Now));
     
                //reaffiche la datagrid
                dataGridParticipantVaccin.DataSource = null;
                dataGridParticipantVaccin.DataSource = liste_Vaccins_Participants;
                dataGridParticipantVaccin.Refresh();
    .....

  12. #12
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Le code ci-dessous est inutile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //reaffiche la datagrid
                dataGridParticipantVaccin.DataSource = null;
                dataGridParticipantVaccin.DataSource = liste_Vaccins_Participants;
                dataGridParticipantVaccin.Refresh();
    

    Dès que le contenu du DataSource change, le dataGridView suit automatiquement.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  13. #13
    Membre éprouvé Avatar de shaun_the_sheep
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2004
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 619
    Points : 996
    Points
    996
    Par défaut
    Merci de votre aide.

    Je reste sur la solution N°2 avec une gestion de l'ajout en dehors de la datagrid.

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

Discussions similaires

  1. Ajouter une ligne dans un datagridview
    Par Destiny dans le forum Windows Forms
    Réponses: 3
    Dernier message: 29/08/2007, 17h48
  2. Ajouter des lignes dans un DataGridView au moment du design?
    Par ferradji dans le forum Windows Forms
    Réponses: 3
    Dernier message: 28/03/2007, 15h05
  3. Réponses: 2
    Dernier message: 19/03/2007, 21h52
  4. [VB 2005][DatagridView] Ajouter une ligne par code
    Par RaelRiaK dans le forum VB.NET
    Réponses: 3
    Dernier message: 23/01/2007, 23h54
  5. [C# 2.0] DataGridView ajout de ligne à la volée
    Par blasme dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/04/2006, 12h05

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