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 Presentation Foundation Discussion :

Modification de la valeur d'une cellule d'un datagrid


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2009
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 149
    Par défaut Modification de la valeur d'une cellule d'un datagrid
    Bonjour à tous,
    j'ai un datagrid dans lequel j'autorise l'utilisateur final à modifier la valeur. Cette valeur entrée doit être multiplié par celle de la cellule juste après (sur la même ligne) pour afficher le résultat dans une troisième cellule (toujours sur la même ligne) quand la cellule éditée perd le focus.
    Malheureusement si l'utilisateur ne valide pas la saisie par la touche entrée et qu'il clic sur une ligne autre que celle où se trouve la cellule éditée, le résultat du calcul s'affiche dans cette ligne et non dans la ligne où à lieu la modification.
    Je n'arrive vraiment pas à comprendre pourquoi.
    auriez-vous un code permettant de faire ce genre d'opération sans que le résultat du calcul ne s'affiche dans une autre cellule même si on clic ailleurs dans une autre ligne que la concernée ?
    Merci d'avance

  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 : 43
    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
    Par défaut
    Montre ton code actuel, il doit y avoir une petite erreur

  3. #3
    Membre confirmé
    Inscrit en
    Août 2009
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 149
    Par défaut
    Bonjour à tous,
    voici mon code :

    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
     
            private void dg_ProdLivr_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
            {
                try
                {
                    int ind = dg_ProdLivr.SelectedIndex;//Récupération de l'index de la ligne où se trouve la cellule.
     
                    TextBox txt_Cell = e.EditingElement as TextBox;
     
                    if (e.Column.DisplayIndex.Equals(3))
                    {
                        Data.ServiceWSPharmacie.vueProdMagLiv prodMaglivr = (Data.ServiceWSPharmacie.vueProdMagLiv)dg_ProdLivr.CurrentItem; // conversion de la ligne  au type de la liste qui a servi à remplir le datagrid
     
                        this.montantTotal += prodMaglivr.montLiv;
                        prodMaglivr.montLiv = int.Parse(txt_Cell.Text) * prodMaglivr.PULiv; //le calcul 
                        this.montantTotal += prodMaglivr.montLiv;
                        lsVueProdMagLivr.RemoveAt(ind); // suppression de la ligne dans la liste (la liste s'appelle lsVueProdMagLivr) 
                        lsVueProdMagLivr.Insert(ind, prodMaglivr); //insertion de la nouvelle ligne à la même place que l'ancienne
     
                        this.txt_MontTotal.Text = this.montantTotal.ToString();
                    }
     
                    e.Row.Background = System.Windows.Media.Brushes.SeaGreen;
                }
                catch (Exception Ex)
                {
                    tm.messageErreur(Ex.Message);
                }
            }
    si après modification au lieu de valider par la touche entrée je clic sur une autre ligne, la variable "ind" qui contient normalement le numéro de la ligne modifiée change de valeur et récupère le numéro de la dernière ligne cliquée.

  4. #4
    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 : 43
    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
    Par défaut
    N'utilise pas SelectedIndex, mais plutôt e.RowIndex

  5. #5
    Membre confirmé
    Inscrit en
    Août 2009
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 149
    Par défaut
    ok je remplace et je vous tiens informé!

  6. #6
    Membre confirmé
    Inscrit en
    Août 2009
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 149
    Par défaut
    l'instruction e.RowIndex n'exite pas en WPF j'ai plutôt remplacer par e.Row.GetIndex(); mais rien n'y fit le résultat est le même.

Discussions similaires

  1. [XL-2007] Modification de la valeur d'une cellule modifiable
    Par atk_49 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 21/02/2013, 17h09
  2. Réponses: 2
    Dernier message: 17/07/2007, 14h52
  3. modification de la valeur d'une cellule
    Par magictom42 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 17/10/2006, 17h22
  4. [VB.NET]Valeur d'une cellule d'un datagrid
    Par Franck2mars dans le forum Windows Forms
    Réponses: 2
    Dernier message: 20/04/2006, 09h39
  5. [C#] Attribuer une valeur a une cellule d'un DataGrid
    Par linuxludo dans le forum Windows Forms
    Réponses: 16
    Dernier message: 19/11/2005, 17h42

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