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#] Remplir un datagrid en dble clic sur un autre datagrid


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 77
    Points : 83
    Points
    83
    Par défaut [C#] Remplir un datagrid en dble clic sur un autre datagrid
    Bonjour,

    voila mon ptit problemes c'est que j'ai un datagrid avec des donnée affiché d'une base. en cliquant sur une des lignes je vourrais recopier cette ligne dans l'autre datagrid afin de les sauvegardes .

    j'ai donc fait mon code, mais il me mets l'erreur suivante :

    " la référence objet n'est pas définie à une instance objet " .


    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
     
    namespace WindowsApplication11
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
     
            DataSet ds_articles;
            DataSet ds_a_sauvegarder;
     
     
            public string sqlcon = @"Server=ACERFERRARI\SQLExpress; Integrated Security=SSPI; Connection Timeout=10; Database=DEVIS;User ID=ACERFERRARI\Ced;password=";
     
     
            private void Form1_Load(object sender, EventArgs e)
            {
     
                try // try sert a detecter les erreur ( avec catch )
                {
                    ds_articles = new DataSet();
                    SqlDataAdapter adaptater = new SqlDataAdapter("SELECT * FROM articles WHERE (famille_art = N'Cartes Mères')", sqlcon);
                    adaptater.Fill(ds_articles, "articles");
     
                    dataGridView1.DataSource = ds_articles.Tables[0];
     
                }
                catch (System.Data.SqlClient.SqlException ex)
                {
                    MessageBox.Show(ex.Message, "Erreur SQL");
                }
     
            }
     
            private void gridView1_DoubleClick(object sender, EventArgs e)
            {
                // si la grille affichage contient des lignes
                if (gridView_affiche.RowCount > 0)
                {
                    // Ajoute une ligne vide
                    gridView_a_sauvegarder.AddNewRow();
     
                    // Rempli les valeurs pour les differentes colonnes
                    gridView_a_sauvegarder.SetRowCellValue(gridView_a_sauvegarder.FocusedRowHandle, gridView_a_sauvegarder.Columns["Column_famille_art"], gridView_affiche.GetRowCellValue(gridView_affiche.FocusedRowHandle, gridView_affiche.Columns["famille_art"]).ToString());
                    gridView_a_sauvegarder.SetRowCellValue(gridView_a_sauvegarder.FocusedRowHandle, gridView_a_sauvegarder.Columns["Column_desig_art"], gridView_affiche.GetRowCellValue(gridView_affiche.FocusedRowHandle, gridView_affiche.Columns["desig_art"]).ToString());
                    gridView_a_sauvegarder.SetRowCellValue(gridView_a_sauvegarder.FocusedRowHandle, gridView_a_sauvegarder.Columns["Column_marque_art"], gridView_affiche.GetRowCellValue(gridView_affiche.FocusedRowHandle, gridView_affiche.Columns["marque_art"]).ToString());
     
                    // Termine la maj de la ligne
                    gridView_a_sauvegarder.UpdateCurrentRow();
                }
            }
     
            private void dataGridView2_Click(object sender, EventArgs e)
            {
     
            }
        }
    }

  2. #2
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Quelle ligne l'erreur ?

    Et comment il peut compiler ton programme ?
    Y'a un gridView_affiche et un gridView_a_sauvegarder qui ne sont pas définis.

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 77
    Points : 83
    Points
    83
    Par défaut
    voici une capture du prog. pas de numero de ligne. sinon le programme se lance bien.
    Images attachées Images attachées  

  4. #4
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Ahhhhh une message box. bah il suffisait de le dire, on peut pas l'inventer

    Ce qui est curieux, c'est que dans ton code, la message box que tu créé (après la récupération des données en base), tu lui met "Erreur SQL" en titre, alors que dans ta copie d'écran, le titre n'est pas le même.

    Question : où est déclenchée l'erreur ? Une petite exécution avec des points d'arrêt bien choisis te donneront la solution. Tu sais te servir du débugger de VS.Net ?

    Elle apparait quand ton erreur ? lorsque tu double click ?

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 77
    Points : 83
    Points
    83
    Par défaut
    Ui j'aurais pu preciserr que c'etait une message box.

    Sinon voila mon erreur ce situe comme tu le vois sur l'image a moment de la copie.

    hé oui c juste apres le double click que viens l'erreur.
    Images attachées Images attachées  

  6. #6
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Mouaip.. je vois pas le pb.
    Je serais toi je découperait la ligne incriminée pour voir lequel de mes paramètre est nul :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // le row affiché
    int rowaff = gridView_affiche.FocusedRowHandle;
    // la colonne associée
    DataColumn colaff = gridView_affiche.Columns["desig_art"];
    // on récupère la valeur affichée
    object value = gridView_affiche.GetRowCellValue(rowaff, colaff);
     
    // le row a sauver
    int rowsave = gridView_a_sauvegarder.FocusedRowHandle;
    // la colonne associée
    DataColumn colsave = gridView_a_sauvegarder.Columns["Column_desig_art"];
    // on sauvegarde la valeur
    gridView_a_sauvegarder.SetRowCellValue(rowsave, colsave, value.ToString());

  7. #7
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Ok j'vais essayer. mais ma formule a déjà marcher alors je comprend pas trop non plus.

    Bref j'vais essayer encore et encore ... lol

    Merci quand meme !!

  8. #8
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Citation Envoyé par Izzy's
    Ok j'vais essayer. mais ma formule a déjà marcher alors je comprend pas trop non plus.
    Intéressant.
    Bah cherche ce qui a été modifié depuis.
    Pas la peine de me dire "rien n'a été modifié", ce n'est pas vrai. C# est déterministe
    Ca peut être un effet de bord. Genre la config de ton SGBD qui a changé, ou un de tes objets perso que tu as modifié ailleurs que dans le code que tu as publié...

  9. #9
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    héhé j'allais dire j'ai rien changer, meme si sur le principe je suis d'accord avec toi quelque chose a forcement changer.

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 238
    Points : 269
    Points
    269
    Par défaut
    Y a un truc qui va pas dans ton expression, tu utilise forcement un objet qui n'est pas instancier ce qui provoque cette erreur. C'est à toi de fouiller, avec le Debug et un peu d'huile de coude tu devrais y arriver.

    Pour en revenir à ton problème principale je ferais autrement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private void MonPremierDataGrid_CellClick(object sender, DataGridViewCellEventArgs e)
    {
          //Selection de la Ligne
          DataGridViewRow maLigne = this.DG_Detail_DP.Rows[e.RowIndex];
          //Ajout de celle-ci dans l'autre DataGrid
          MonSecondDataGrid.Rows.Add(maLigne);
    }
    Il ya même une surcharge pour donné l'indice ou tu veux insérer la ligne.

    Ca devrait marché si tes deux DataGrid ont la même structure je pense

Discussions similaires

  1. Remplir un champ selon le clic sur un élément
    Par signe22 dans le forum jQuery
    Réponses: 1
    Dernier message: 02/01/2014, 18h58
  2. [POO] Modif value champ suite clic sur un autre
    Par hari37 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 05/11/2008, 11h11
  3. [DataGrid] Intercepter le clic sur en-tête de colonne
    Par david71 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 04/07/2007, 11h52
  4. Réponses: 11
    Dernier message: 11/08/2006, 17h52
  5. Réponses: 7
    Dernier message: 24/07/2006, 16h11

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