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 :

C# créer une boucle pour alimenter un Datagridview


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 507
    Par défaut C# créer une boucle pour alimenter un Datagridview
    Bonjour à tous,

    Comment réaliser une boucle pour insérer des lignes dans un Datagridview...
    J’ai deux Datagridview l’un à côté de l’autre.
    Le premier qui permet de réaliser des commandes (DGV_New_Dmd) est vide et le deuxième (DGV_Article_P2) possède des données.
    J’arrive lors d’un double click sur une des lignes du (DGV_Article_P2) à insérer une ref avec son article dans le (DGV_New_Dmd).

    Cependant je ne sais pas réaliser une boucle de façon que lors d’un deuxième double click sur un autre article et bien celui là s’ajoute dans une nouvelle ligne en dessous de l’autre..etc

    Le but étant d’ajouter des lignes les unes derrières les autres….

    Voici le code qui ajoute une ligne choisi dans le (DGV_Article_P2):
    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
     
    if (e.RowIndex >= 0)
     
                    {
     
                        DataGridViewRow Row1 = DGV_Article_P2.Rows[e.RowIndex];
     
                        if (Row1 != null)
     
                            if (Txt_Valide_Article.Text == "Oui")
     
                            {
     
                                DataTable table = new DataTable();
     
                                table.Columns.Add("ID_Auto", typeof(string));
                                table.Columns.Add("Référence", typeof(string));
                                table.Columns.Add("Qtté", typeof(string));
                                table.Columns.Add("Désignations", typeof(string));
                                table.Columns.Add("Montant ht", typeof(string));
     
     
                                DGV_New_Dmd.DataSource = table;
     
                                table.Rows.Add("", Row1.Cells["Num_Réf"].Value.ToString(), "", Row1.Cells["Désignations"].Value.ToString(), "");
     
                                DGV_New_Dmd.DataSource = table;
     
                            }
                    }
    Actuellement si je double click sur une ligne elle remplace tout simplement celle déjà en place...ce n'est pas si simple de réaliser une boucle pour permettre d'ajouter les lignes...
    Nom : exemple.jpg
Affichages : 377
Taille : 306,5 Ko

    Comment réaliser cette boucle ?

    Merci à vous

    Bruno

  2. #2
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 540
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 540
    Par défaut
    bonsoir pour les grilles de données il suffit de mettre une requête SQL en source de données ou bien un "dataset"
    Ou bien en obtenant le nombre d'enregistrement sélectionnés ensuite ce n'est pas dfficle boucler de 0 au nombre d'enregistrements -1 et appeler AddItem

  3. #3
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour

    Mis à part les "accents francais" qu'il faut virer dans les noms de champ(source de bogues) et la valeur du TextBox qu'il faut convertir en majuscule ou minuscule (l'user peut taper ce qu'il veut tout est converti en "OUI" maj), ton code modifie se présente ainsi (il utilise l’Évent RowEnter) :

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
    namespace WinAddNewItem
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            private void Form1_Load(object sender, EventArgs e)
            {
                DataTable tableArticle = GetArticle();
                DGV_Article_P2.DataSource = tableArticle;
            }
            private DataTable GetArticle()
            {
                DataTable table = new DataTable();
                table.Columns.Add("ID_Auto", typeof(string));
                table.Columns.Add("Nom", typeof(string));
                table.Columns.Add("Num_Ref", typeof(string));
                table.Columns.Add("Designations", typeof(string));
     
                DataRow dr = table.NewRow();
                Random rnd = new Random();
                for (int i = 1; i < 21; i++)
                {
                    dr[0] = i.ToString(); 
                    dr[1] = "Article" + i.ToString();
                    dr[2]= rnd.Next(200,500).ToString();
                    dr[3] = "Valise";
                    table.Rows.Add(dr);
                    dr=table.NewRow(); 
                }
                return table;
            }
            private DataTable GetDmd()
            {
                DataTable table = new DataTable();
                table.Columns.Add("ID_Auto", typeof(string));
                table.Columns.Add("Reference", typeof(string));
                table.Columns.Add("Quittance", typeof(string));
                table.Columns.Add("Designations", typeof(string));
                table.Columns.Add("Montant HT", typeof(string));
     
     
                return table;
            }
            DataTable tableDmd = null;
            private void DGV_Article_P2_RowEnter(object sender, DataGridViewCellEventArgs e)
            {
     
                if (e.RowIndex >= 0)
                {
     
                    if (e.RowIndex == 0)
                    { 
                        tableDmd = GetDmd();
                        DGV_New_Dmd.DataSource = tableDmd;
     
                    }
                    DataGridViewRow Row1 = DGV_Article_P2.Rows[e.RowIndex];
     
                    if (Row1 != null)
     
                        if (Txt_Valide_Article.Text.ToUpper() == "OUI")
                        {
     
                            tableDmd.Rows.Add("", Row1.Cells["Num_Ref"].Value.ToString(), "", Row1.Cells["Designations"].Value.ToString(), "");
     
     
                        }
                }
     
            }
     
            private void Txt_Valide_Article_Validated(object sender, EventArgs e)
            {
     
            }
     
     
        }
    }
    bon code...

  4. #4
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 987
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 987
    Par défaut
    Si ton objectif est d'ajouter une ligne, il faut commencer par ne pas créer un nouveau DataTable à chaque fois mais récupérer celui existant déjà dans DataSource pour ensuite y ajouter une ligne.

  5. #5
    Membre éclairé Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 507
    Par défaut
    Merci à vous,

    Merci beaucoup MABROUKI après avoir modifié à ma sauce ça marche super....

    C'est exactement ce que je voulais....

    Tu as raison j'ai modifié les accents dans mes BDD car j'avais également des soucis d'enregistrement.

    on avait du me le dire à un moment donné mais...
    c'est en forgeant qu'on devient forgerons
    Bien cordialement,

    Bruno

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

Discussions similaires

  1. [XL-2013] créer une boucle pour créer des onglets en fonction des valeurs d'une colonne
    Par BOUJ08 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 11/02/2016, 11h46
  2. Réponses: 12
    Dernier message: 25/11/2013, 10h10
  3. créer une boucle pour x et y
    Par timtof2011 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/09/2011, 02h59
  4. [XL-2007] Créer une boucle pour copie des tableaux de plusieurs feuilles sur une seule
    Par rvtoulon dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 22/09/2009, 17h12
  5. Réponses: 21
    Dernier message: 23/05/2007, 16h16

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