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 :

écrire dans une datagridview


Sujet :

C#

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Points : 5
    Points
    5
    Par défaut écrire dans une datagridview
    salut à tous,
    j'ai créé une datagridview et à spécifié comme datasource ma classe Comptes

    je veux remplir cette datagridview en y innsérant ce que j'ai dans ma textbox

    j'ai décalqué mon code sur une autre appli où ce sustème marche très bien, mais je dois avoir un problème (surement tres simple), je me retrouve avec une exception qui me di que l'instance n'est pas créée !

    voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private void OK_click(object sender, eventargs e)
    {
               _comptes[datagridview1.CurrentRow.Index].inscrire(solde) //j'ai essayé de remplacer solde par un entier qqcque, ca devrait marcher mais ca ne marche pas non plus :(:(
    }

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    ce serait plus facile de t'aider si on avait le code de la méthode inscrire...

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public void inscrire(double unMontant)
     
    {
              this._solde = unMontant
     
    }

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    je crois avoir trouvé la raison mais je ne sais pas comment résoudre le problème :

    quand je mets un point d'arrêt sur la ligne : _comptes[datagridview ...
    l'espion m'indique que _comptes est NULL alors que ca devrait etre une liste avec des valeurs deja existantes :s:s

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    Citation Envoyé par b.e.n.n Voir le message
    je crois avoir trouvé la raison mais je ne sais pas comment résoudre le problème :

    quand je mets un point d'arrêt sur la ligne : _comptes[datagridview ...
    l'espion m'indique que _comptes est NULL alors que ca devrait etre une liste avec des valeurs deja existantes :s:s
    A quel endroit tu initialises _comptes ? où est-il déclaré ?

  6. #6
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Salut ..

    A part le fait que comme le suggere Tomlev tu a surement un problème d'initialisation, je percois une autre Horreur !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    _comptes[datagridview1.CurrentRow.Index].inscrire(solde)
    Si je comprends bien tu souhaite modifier un Element selon l'indice d'un row du DGV

    NE JAMAIS jouer a ca ! c'est la catastrophe assurée

    Il faut utiliser le DataBoundItem du Row

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    Citation Envoyé par olibara Voir le message
    Il faut utiliser le DataBoundItem du Row
    +1

    cela dit, dans le cas d'une liste ou d'un tableau, il n'y a pas trop de risques à faire comme ça...

    D'un autre côté ça pourrait résoudre son problème, vu qu'il n'y aurait plus besoin de faire référence à _comptes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private void OK_click(object sender, eventargs e)
    {
        Compte compte = dataGridView1.CurrentRow.DataBoundItem as Compte;
        compte.inscrire(solde);
    }
    Par contre ça ne va pas suffire : il faut que la classe implémente INotifyPropertyChanged, pour pouvoir notifier le DGV du changement de la valeur de Solde

  8. #8
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Salut TomLev

    cela dit, dans le cas d'une liste ou d'un tableau, il n'y a pas trop de risques à faire comme ça
    Pour expliquer le probleme a ceux que a intéresse

    Un DataGridView peut etre trié indépendemment de sa source

    Si la source est une datatable c'est tout a fait vrai et dans ce cas l'indice d'un DataGridViewRow pet ne pas correspondre a l'indice de l'element dans la datatable

    Un DGV bindé sur une liste ou un array ne se trie normalement pas SAUF si c'est une Bindinglist ou si l'on passe par un BindingSource

    Mais dans tous les cas il est plus sain d'utiliser le DataBoundItem qui garanti un adressage fiable !

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    Citation Envoyé par olibara Voir le message
    Un DGV bindé sur une liste ou un array ne se trie normalement pas SAUF si c'est une Bindinglist ou si l'on passe par un BindingSource
    Ah oui, bien vu

Discussions similaires

  1. Peut-on écrire dans une map ?
    Par JackBeauregard dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 18/12/2006, 18h26
  2. Stringgrid: empêcher d'écrire dans une cellule
    Par didier17062006 dans le forum C++Builder
    Réponses: 1
    Dernier message: 12/11/2006, 15h16
  3. Réponses: 1
    Dernier message: 01/09/2006, 20h13
  4. Réponses: 1
    Dernier message: 18/04/2006, 23h16
  5. Réponses: 3
    Dernier message: 01/02/2006, 21h31

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