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 :

Assigner une valeur a une case en particulier dun datagrid [Débutant]


Sujet :

Windows Presentation Foundation

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 149
    Points : 46
    Points
    46
    Par défaut Assigner une valeur a une case en particulier dun datagrid
    Bonjour '

    J'aimerais faire quelque chose assez simple sur le moment mais je ne trouve pas coment.

    J'aimerais, à l'aise dun datagrid en wpf en C#, assigner une valeur à la ligne 5 et à la colonne 2. (Par exemple)

    Je cherche tout simplement a assigner une valeur a une case en particulier.

    Je voudrais éviter le binding, donc tout simplement le faire directement dans le code behind.

    Merci

  2. #2
    Membre averti
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2014
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 196
    Points : 331
    Points
    331
    Par défaut
    Faire du WPF sans Binding, comment dire ... tu perd une bonne partie de l'intérêt des technologies WPF , deux solutions utiliser WinForm ou te mettre au Binding, c'est pas si compliquer que cela , un lien sur ce site pour débuter : http://nathanaelmarchand.developpez....t-silverlight/

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 149
    Points : 46
    Points
    46
    Par défaut
    J'aimerais seulement un bout de code

    Je ne cherche pas compliquer

    J'ai fini mon projet mais il me reste plus qu'à changer une valeur du data en une autre. C'est quelque ligne de code je pense mais je ne trouve pas.

    En winform Cest genre datagrid.items[1,4]
    Mais la...

  4. #4
    Membre averti
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2014
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 196
    Points : 331
    Points
    331
    Par défaut
    Sinon tu peut utiliser le composant Grid, qui est juste une grille qui n'est pas lié as une source de données, mais il te faudra créer les RowDefinition à la main (Plus une pour les entêtes que tu doit aussi créer toi même), les ColumnDefinition peuvent être statique dans le XAML si tu connait à l'avance tes colonnes , mais c'est carrément réinventer la roue ...

    Si ta grille contient déja des données c'est qu'elle est lié à une source de donnée (une List ou une ObservableCollection ) , c'est une des propriétées de l'un des objets de cette liste qu'il faut que tu modifie pour voir la valeur de ta cellule changer.

    Tu peut accéder aux élément d'une liste par leur Index , example : laList[3] si tu veut la ligne ... 4 (car les index commence à 0).
    Ensuite tu modifie la propriété de l'objet renvoyer par la liste , le nom de la propriété est le même que celui du Binding de la colonne ou est affiché cette valeurs, suis-je clair ... dans tout les cas un peut de ton XAML serais appréciable pour pouvoir mieux t'aider

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 149
    Points : 46
    Points
    46
    Par défaut
    Mon tableau récupère un dataset d'une requete sql

    Et j'assigne ce dataset a mon tableau, le problème c'est que j'ai ine classe passerelle ou toute mes méthode sont utiliser, donc je ne peux pas le modifier directement.

    Cest pour ça que je voulais modifier la case cible de mon datagrid mais je n'y arrive pas

  6. #6
    Membre averti
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2014
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 196
    Points : 331
    Points
    331
    Par défaut
    Si ta DataGrid est lié as une source de Donnée (un DataSet ou autre) impossible de modifier la valeur d'une cellule sans que la source n'en soit impacté.


    (Que quelqu'un me rappel à l'ordre si je dit une bêtise)

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 149
    Points : 46
    Points
    46
    Par défaut
    Mais cest quand même fou ! On peut le faire en form mais pas en Wpf !?

    Je ne saisie pas la logique la :/

  8. #8
    Membre averti
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2014
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 196
    Points : 331
    Points
    331
    Par défaut
    Je ne connait pas bien Winform mais j'ai un doute sur la possibilité de modifier le contenu d'une cellule sans modifier la source si la grille est liée a une source de donné ..... Après si elle est pas lié oui tu peut créer des DataRow en winforms accéder aux valeurs des cellule, sa d'accord , mais la philosophie WPF ne vas pas dans ce sens , une DataGrid est lié a une source de donné. Point final. A mon avis il te faudrais plutôt un Composant SpreadSheet style tableur Excel.

    Au pire tu peut toujours mettre une vieille DataGrid Winform a la place WPF a un composant dédié a l'affichage d'un composant Winform, WinformHost .

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 149
    Points : 46
    Points
    46
    Par défaut
    Je up !

    Voila mon tableau :

    Nom : d1b22fbaa6.png
Affichages : 133
Taille : 9,1 Ko

    Il faut que je remplace le 1 et le 3 par leurs noms. Je passe par une requete, il me manque plus qu'a le remplacer dans le tableau !

  10. #10
    Membre averti
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2014
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 196
    Points : 331
    Points
    331
    Par défaut
    Le dataSet étant typé tu ne pourras pas mettre une chaine texte a la place d'un entier. En revanche si l'entier en question est un identifiant d'une autre table tu peut évidement afficher son nom ou autre a la place de l'identifiant , la procédure est expliquez la : khttp://msdn.microsoft.com/fr-fr/libr...vs.110%29.aspx

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 149
    Points : 46
    Points
    46
    Par défaut
    L'id est considérer comme un string et non un entier, il y a peut etre moyen de le modifier avant l'ajout dans le datagrid nan ?

  12. #12
    Membre averti
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2014
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 196
    Points : 331
    Points
    331
    Par défaut
    Le modifier seras considéré comme un changement d'État de la ligne pour le DataSet,a sa prochaine synchronisation il essaiera de faire un Update de cette ligne. la 'bonne' solution est de lié l'affichage a la table parente comme expliqué dans le lien ci-dessus. Tu as bien une table parente ?

    En plus l'exemple du lien montre comment afficher le nom d'un client au lieu de son Id, c'est exactement ton cas...

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 149
    Points : 46
    Points
    46
    Par défaut
    Qu'entends tu par une Table parente ?

    Quand je remplis mon datagrid avec mon dataSet je fais comme ceci :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DataSet MonTableau = connection.ReadTable(requete);
    DataGridView.ItemsSource = MonTableau.Tables[0].DefaultView;

    connection.ReadTable est une fonction de ma classe passerelle.

  14. #14
    Membre averti
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2014
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 196
    Points : 331
    Points
    331
    Par défaut
    Soit tu veut juste afficher le nom du client au lieux de son Id , dans ce cas modifie carrément la requête SQL. Soit tu veut pouvoir afficher le nom du client et modifié le client d'une ligne auquel cas il faut suivre la procédure du lien Msdn.

    J'entends par table parente une table ou tu as pour chaque client son id et son nom et qui est lié a la table principale de ta requête par une contrainte de clé étrangère

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 149
    Points : 46
    Points
    46
    Par défaut
    Ok c'est good ! J'ai suivis ton tuto !

    Je le met en résolu Merci vraiment de ton aide !


    Au faites, petit question, comment centre t'on le texte dans le datagrid ? (Regarde mon data, le texte est aligné a gauche !)

  16. #16
    Membre averti
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2014
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 196
    Points : 331
    Points
    331
    Par défaut
    Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <DataGrid.Resources>
        <Style TargetType="{x:Type DataGridColumnHeader}">
            <Setter Property="HorizontalContentAlignment" Value="Center" />
        </Style>
    </DataGrid.Resources>
    pour toutes les colonnes , sinon il faut faire un style pour les colonnes dont tu ne veut pas le style par défaut.

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 149
    Points : 46
    Points
    46
    Par défaut
    Tu touches ! Tu touches !

    Je fais du WPF depuis 1mois et demi, c'est complétement différent du form x) j'ai beaucoup de chose a apprendre !

    Merci ! Je lock !

  18. #18
    Membre averti
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2014
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 196
    Points : 331
    Points
    331
    Par défaut
    Bon code

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. Sélectionner seulement une partie d'une valeur d'une cellule
    Par ArthurO0O dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/08/2007, 11h05
  3. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  4. passer une valeur d'une requête a une table
    Par LesLemmings dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 09/06/2006, 14h13
  5. Mettre une valeur d'une table dans une variable
    Par Raphou96 dans le forum Access
    Réponses: 5
    Dernier message: 06/02/2006, 15h19

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