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 :

[Visual C#] Modifier une cellule dans un dataGrid (WPF)


Sujet :

C#

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2018
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 23
    Points : 17
    Points
    17
    Par défaut [Visual C#] Modifier une cellule dans un dataGrid (WPF)
    Bonjour à tous, j'ai besoin de votre aide.
    Voilà, je n'arrive pas à savoir comment modifier le contenu d'une cellule dans un dataGrid.
    Malgré plusieurs tests et recherches, je ne m'en sors toujours pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dataGrid.Columns[1].GetCellContent(dataGrid.Items[0])
    Juste après avoir identifié le n° de la ligne, j'ai fait appel à la méthode "SetValue"
    (c'est la seule que j'ai trouvé, mais je suis sûr que c'est celle-là).
    Toutefois, cette méthode requiert 2 paramètres :
    - un "DependencyProperty" (peut-être pour définir un paramètre sur cette cellule),
    - et un "object" (la nouvelle valeur ; je ne sais pas si on peut stocker sous forme de chaîne).

    J'avais écrit ça en exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SetValue(DependencyProperty.RegisterReadOnly, "new value");
    Alors que "RegisterReadOnly" correspond bien au bon type, Visual Studio me signale que mes arguments ne sont pas valides.

    Est-ce que quelqu'un a déjà rencontré ce problème ?

  2. #2
    Membre éprouvé
    Homme Profil pro
    Administrateur Systèmes, Clouds et Réseaux /CAO/DAO/Ingénierie Electrotechnique
    Inscrit en
    Décembre 2014
    Messages
    454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur Systèmes, Clouds et Réseaux /CAO/DAO/Ingénierie Electrotechnique

    Informations forums :
    Inscription : Décembre 2014
    Messages : 454
    Points : 998
    Points
    998
    Par défaut
    De mémoire il me semble que ça ne gère pas un string mais un object, déjà je crois que pour le texte je récupérais avec un Textbox. Je pourrais pas te dire comment modifier je ne l'ai pas fait dans ce sens mais pour récupérer, mais par contre je sais que ça n'a pas de rapport avec ce qu'on trouve en winform, et je suis quasi sur qu'on récupérait un object.

    j'ai retrouvé la ligne finalement, si ça peut commencer à t'aider.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     TextBlock tbGuid = dgPath.Columns[0].GetCellContent(dgPath.Items[index]) as TextBlock;
    Et un peu plus bas je l'utilise:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     opDG.Push(new ContPath(tbGuid.Text, tbPath.Text, "deleted"));

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2018
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    Votre exmple s'applique en "WPF" ou en "Windows Form" ?
    Attention à ne pas confondre les 2, car les composants graphiques ne sont pas les mêmes, les
    variables et les méthodes non plus.
    À quoi correspond "opDG" ?

  4. #4
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 442
    Points
    4 442
    Par défaut
    BONJOUR

    DataGrid.CurrentCell & DataGrid.CurrentItem sont tes amis !!!
    bon code...

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2018
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    CurrentCell m'aidera peut-être.
    Je commence à voir à quel point Visual Studio me complique trop la tâche !
    Je dois passer par plusieurs classes du FrameWork.net.
    Merci pour vos propositions !

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2018
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    Bonjour à tous, après plusieurs mois d'absence, mon problème est enfin résolu !
    Je n’ai pas pu utiliser la méthode « setValue() », mais j’ai trouvé plus intéressant et plus facile.
    (Pour info, je viens à peine de découvrir cette astuce ! )

    J’ai déclaré une variable de type « TextBlock », ce qui permet de lire ou d’écrire dans une cellule « normale », (cellule qui se remplit au clavier).

    C’est assez surprenant, vous allez voir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TextBlock value = dataGrid.Columns[ n°col ].GetCellContent(dataGrid.Items[ n°lig ]) as TextBlock;
    value.Text = "ma nouvelle valeur";
    Inconvénient : ce programme ne peut pas fonctionner juste après une (ré)initialisation du tableau.
    Voici mon exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    DataTable dt = new DataTable();
    dt.Columns.Add(...)
    (...)
    dataGrid.ItemsSource = dt.DefaultView;
     
    TextBlock value = dataGrid.Columns[0].GetCellContent(dataGrid.Items[0]) as TextBlock;
    value.Text = "ma nouvelle valeur";
    Votre application va planter à coup sûr.

    D'ailleurs, je remercie daerlnaxe qui m'a mis sur la piste, car j'ai utilisé une partie de son code.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 26/10/2015, 08h09
  2. Macro qui modifie une cellule dans une colonne fixe
    Par nyto35 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/04/2013, 12h48
  3. [xlswrite] Modifier une cellule dans Excel
    Par nilsmatlab dans le forum MATLAB
    Réponses: 7
    Dernier message: 03/08/2011, 16h18
  4. Modifier une cellule dans Exel
    Par Papoux dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/12/2007, 13h22
  5. Comment modifier une cellule dans un JTable
    Par @yoyo dans le forum Composants
    Réponses: 10
    Dernier message: 22/03/2006, 16h48

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