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

C# Discussion :

Datagridview Tri ( erreur )


Sujet :

C#

  1. #1
    Membre confirmé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Points : 457
    Points
    457
    Par défaut Datagridview Tri ( erreur )
    Bonjour a tous

    Dans mon programme je fais un tri sur une colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     //Tri les lignes en fonction des quantités
                            ListSortDirection TryDirection = ListSortDirection.Descending;
                            DgComposants.Sort(DgComposants.Columns["Quantite"], TryDirection);
    Jusque là , tout va bien lorsque de rentre des données. Le tout est bien trié.
    Je sauves les données du datagridview dans un DB sql, je recharge les données. tout va toujours bien
    Je veux ajouter une ligne de données dans le datagridview et là le datagridview.sort me donne l'erreur suivante

    (System.ArgumentException*: 'L'objet doit être de type Double.')

    Hors dans la colonne quantité , je mes du Double

    Un peut perdu
    La Connaissance est comme la joie elle s'accroît en la partageant!

  2. #2
    Max
    Max est déconnecté
    Expert éminent sénior

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Points : 14 979
    Points
    14 979
    Par défaut
    Salut
    Citation Envoyé par thierry007 Voir le message
    Je veux ajouter une ligne de données dans le datagridview et là le datagridview.sort me donne l'erreur suivante

    (System.ArgumentException*: 'L'objet doit être de type Double.')

    Hors dans la colonne quantité , je mes du Double
    Ne cherche pas midi à quatorze heures, à un moment un Double est attendu et tu lui passes autre chose . Un petit coup de debug, des points d'arrêt aux bons endroits et tu trouveras rapidement le souci

  3. #3
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 898
    Points : 1 915
    Points
    1 915
    Par défaut
    Une idée au hasard : si tu tires tes données d'une base, est-ce-qu'il n'y a pas un moment où tu oublie une conversion, par exemple d'un DBDouble vers double ou quelque chose du genre ?

  4. #4
    Membre confirmé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Points : 457
    Points
    457
    Par défaut
    Bonjour

    Ce qui m'a un peut perdu , c'est le fait que
    Au chargement du programme, lorsque le datagridview est vide je peux rentrer les données et le tri se fait sans problème
    MAIS lorsque ces données son sauvegardées et rechargées dans le datagridview -> erreur lors de l'encodage d'une nouvelle ligne.

    La solution -> qui focntionne:
    dans l'événement CellEndEdit, j'ai ajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     DgComposants.CurrentRow.Cells["Quantite"].Value = Convert.ToDouble(DgComposants.CurrentRow.Cells["Quantite"].Value);
    Merci de vos idées
    La Connaissance est comme la joie elle s'accroît en la partageant!

  5. #5
    Max
    Max est déconnecté
    Expert éminent sénior

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Points : 14 979
    Points
    14 979
    Par défaut
    Salut

    Citation Envoyé par thierry007 Voir le message
    Ce qui m'a un peut perdu , c'est le fait que
    Au chargement du programme, lorsque le datagridview est vide je peux rentrer les données et le tri se fait sans problème
    MAIS lorsque ces données son sauvegardées et rechargées dans le datagridview -> erreur lors de l'encodage d'une nouvelle ligne.

    La solution -> qui focntionne:
    dans l'événement CellEndEdit, j'ai ajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     DgComposants.CurrentRow.Cells["Quantite"].Value = Convert.ToDouble(DgComposants.CurrentRow.Cells["Quantite"].Value);
    Une fois de plus, je t'invite à faire du debug sur toutes les étapes (ajout, sauvegarde, rechargement, etc.), il y a forcément un moment où le type des données mises dans la colonne Quantité n'est pas bon.

    Tu peux d'ailleurs vérifier le type au moment où tu fais cette conversion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DgComposants.CurrentRow.Cells["Quantite"].Value = Convert.ToDouble(DgComposants.CurrentRow.Cells["Quantite"].Value);
    Mets un breakpoint dessus, et vérifie le type de DgComposants.CurrentRow.Cells["Quantite"].Value avant sa conversion en Double

    C'est une opinion purement personnelle, mais il faut que tu identifies et règles le problème, car la ligne suivante dans du code c'est tout simplement pas tolérable, c'est vraiment très moche, ce serait insulter le bricolage que de dire que c'est du bricolage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     DgComposants.CurrentRow.Cells["Quantite"].Value = Convert.ToDouble(DgComposants.CurrentRow.Cells["Quantite"].Value);

  6. #6
    Membre confirmé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Points : 457
    Points
    457
    Par défaut
    Salut Max

    Oui probablement , mais étant donner qu'il me faut du double , je n'ai pas beaucoup le choix que de convertir ma cellule en fin de validation. Comment faire autrement.
    Tu me dis de vérifier si c'est bien un double. Mais si cela n'est pas le cas , il faut bien le convertir.
    Ou si tu as une idée plus originale et moins bricolage
    La Connaissance est comme la joie elle s'accroît en la partageant!

  7. #7
    Membre confirmé
    Avatar de nouanda
    Homme Profil pro
    Hobbyist
    Inscrit en
    Mai 2002
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Activité : Hobbyist

    Informations forums :
    Inscription : Mai 2002
    Messages : 246
    Points : 627
    Points
    627
    Par défaut
    Citation Envoyé par thierry007 Voir le message
    Tu me dis de vérifier si c'est bien un double. Mais si cela n'est pas le cas , il faut bien le convertir.
    En effet, il faut bien le convertir. Mais de préférence pas dans la cellule. En règle générale, on ne manipule pas les données directement sur les objets de l'interface utilisateur.
    Ta DataGridView est certainement remplie a partir d'une collection d'objets possédant une propriété Quantité de type double. C'est directement sur ces objets qu'il faut agir.
    C'est pour cela qu'il faut que tu mettes un point d’arrêt bien place pour voir ce que contient ta collection.Peut être as tu des DBNull, ou des float a la place des double.
    " Entre le Savoir et le Pouvoir, il y a le Vouloir "

    Desole pour les accents, je suis en QWERTY...

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

Discussions similaires

  1. DataGridView Tri avec colonnes DataPropertyName
    Par ppphil dans le forum Windows Forms
    Réponses: 9
    Dernier message: 27/07/2010, 12h11
  2. Datagridview - Tri de date (format string)
    Par Chris@Xerox dans le forum Windows Forms
    Réponses: 1
    Dernier message: 18/03/2009, 13h34
  3. DataGridView & Tri automatique
    Par ben_popcorn dans le forum Windows Forms
    Réponses: 5
    Dernier message: 16/12/2008, 16h08
  4. Mise à jour ligne DataGridView trié
    Par aure298 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 19/10/2008, 16h03
  5. [C#]Datagridview : Tri / Filtre
    Par Theka dans le forum Windows Forms
    Réponses: 19
    Dernier message: 24/07/2006, 17h53

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