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 :

L'index était hors limites dans une datagriedview [Débutant]


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Inscrit en
    octobre 2009
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : octobre 2009
    Messages : 156
    Points : 49
    Points
    49
    Par défaut L'index était hors limites dans une datagriedview
    bonjour
    j'ai un forms qui contient une datagriedview qui va être remplit par un clique sur bouton. ensuite lorsque je fait une modification dans une cellule de cette datagried, un calcul sera fait est une autre cellule va être modifiée avec la nouvelle valeur
    pour ce faire j'ai utiliser la méthode
    CellValueChanged
    mais il y a une erreur qui s'affiche lorsque je clique sur le bouton responsable de charger le forms qui contient le datagried

    voici le code du forms:
    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
    private void button2_Click(object sender, EventArgs e)
            {
                mcon.Open();
                string m = " select * from recouvrement.etat";
     
                 mcd = new MySqlCommand(m, mcon);
                MyReader = mcd.ExecuteReader();
     
     
                if (MyReader.HasRows)
                {
                    while (MyReader.Read())
                    {
                        DataGridConstater.Rows.Add(MyReader.GetString(8), MyReader.GetString(6), MyReader.GetString(4), MyReader.GetString(2),
                            MyReader.GetString(3));
                    }
                }
                mcon.Close();
            }
     
    public void DataGridConstater_CellValueChanged(object sender, DataGridViewCellEventArgs e)
            {
                mcon.Open();
     
     
                if (e.ColumnIndex == 2)
                {
     
    m = "select MAX(PU) from recouvrement.prix_unitaire where date <'" + DataGridConstater.Rows[e.RowIndex].Cells["DatExigibl"].Value + "'  ";
                    mcd = new MySqlCommand(m, mcon);
                    MyReader = mcd.ExecuteReader();
                    MyReader.Read();
                    int PU_avant = MyReader.GetInt32(1);
                    string date_avant = MyReader.GetString(0);
                   double a = Convert.ToDouble(DataGridConstater.Rows[e.RowIndex].Cells["Quantity Sold"].Value);
                    double b = Convert.ToDouble(DataGridConstater.Rows[e.RowIndex].Cells["Unit Price"].Value); 
                    DataGridConstater.Rows[e.RowIndex].Cells[5].Value = (PU_avant*a*b).ToString("0.00");
     
                }
     
                mcon.Close();
            }
    l'erreur s'affiche lorsque je clique sur le bouton responsable de charger le forms qui contient la datagried :

    L'index était hors limites. Il ne doit pas être négatif et doit être inférieur à la taille de la collection.
    Nom du paramètre : index
    sur la requete :
    m = "select MAX(PU) from recouvrement.prix_unitaire where date <'" + DataGridConstater.Rows[e.RowIndex].Cells["DatExigibl"].Value + "' ";
    je me trouve bloquée l'erreur indique que l'index et -1 car la datagried est vide parce que l'application ne m'a pas permis d'ouvrir le forms pour remplir le datagried.
    merci d'avance pour vos aide

  2. #2
    Membre émérite
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    mars 2005
    Messages
    1 386
    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 : 1 386
    Points : 2 476
    Points
    2 476
    Par défaut
    Ton évenement CellChange ne serait-il pas déclenché par le fait que tu insère des données données dans la grille ?
    Essaie de placer un booléen pour éviter de passer dedans pendant le chargement.

  3. #3
    Membre du Club
    Inscrit en
    octobre 2009
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : octobre 2009
    Messages : 156
    Points : 49
    Points
    49
    Par défaut
    oui je pense que le problème est que l’événement CellValueCahange se déclenche au niveau de chargement de la grille et puisque la grille est initialement et vide au premier insertion l'index est négatif.
    Donc s'il vous plais comment puisse corriger cet erreur, vous m'avez proposé de déclarer un boolean à quel niveau je le déclare sachant que l'événement se déclenche automatiquement.

    merci d'avance pour l'aide.

  4. #4
    Membre émérite
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    mars 2005
    Messages
    1 386
    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 : 1 386
    Points : 2 476
    Points
    2 476
    Par défaut
    Ce booléen doit être un membre privé de la classe.
    Il sera initialisé à false.
    Il sera mis à true au début de l'événement click du bouton
    Il sera mis à false à la fin de l'événement click du bouton
    Sa valeur sera vérifiée lors du passage dans l'événement CellValueChanged et conditionnera l'exécution de tout le bloc existant.

  5. #5
    Membre du Club
    Inscrit en
    octobre 2009
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : octobre 2009
    Messages : 156
    Points : 49
    Points
    49
    Par défaut
    merci bcp popo

    le problème est résolu grâce à votre aide

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

Discussions similaires

  1. Index liste hors limite dans StringList
    Par Beauserge dans le forum Langage
    Réponses: 7
    Dernier message: 03/05/2017, 17h29
  2. L'index était hors limites ; VB NET 2012
    Par maximob dans le forum VB.NET
    Réponses: 2
    Dernier message: 02/03/2016, 15h44
  3. [Débutant] Problème L'index était hors limites ?
    Par iloveubb dans le forum VB.NET
    Réponses: 2
    Dernier message: 14/08/2015, 08h52
  4. L'index était hors limites
    Par Marie_7 dans le forum VB.NET
    Réponses: 3
    Dernier message: 10/04/2014, 21h43

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