Modifier les valeurs dans un datagrid

[Résolu]
Signaler
Messages postés
135
Date d'inscription
mercredi 8 novembre 2000
Statut
Membre
Dernière intervention
11 mai 2007
-
Messages postés
135
Date d'inscription
mercredi 8 novembre 2000
Statut
Membre
Dernière intervention
11 mai 2007
-
Bonjour,


Dans mon application, j'ai une table que j'affiche dans un datagrid.

Pour les 2 premieres colonnes, j'ai des valeurs entiere ( 1 ou 2).

J'aimerais changer ces valeurs en remplacent 1 par Vrai , et 2 par faux mais sans modifier les valeurs de la table.


Comment puis-je faire ?


Dois je utiliser les propriétés d'un datatable ou d'un dataset pour changer ces valeurs ?


Please help ....

31 réponses

Messages postés
135
Date d'inscription
mercredi 8 novembre 2000
Statut
Membre
Dernière intervention
11 mai 2007
1
Je ne suis pas arriver a Utiliser la méthode de Bidou, car j'ai un probleme de Type de colonne.

Du coup j'ai essayé de modifier ma requete pour arriver a résoudre mon probleme :


SELECT CASE WHEN maColonne1 ='1' THEN 'True' WHEN maColonne1='2' THEN 'False' END AS NomColonne1,

               
              
        maColonne2 ='1' THEN 'True' WHEN
maColonne2='2' THEN 'False' END AS NomColonne2,

               
              
        maColonne3, maColonne4

FROM MaTable ;


Cette Requete Fonctionne lorsque je l'utilise avec la saisi de commande
de mon SGBD (Oracle), mais lorsque je l'insere a .NET j'ai toujours un
probleme de Type de Colonne .


Comment faire pour résoudre ce probleme ? Y a til une solution ?


Please help . . .
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Salut


Il faut passer par les DatagridTableStyle



http://msdn2.microsoft.com/fr-fr/library/79zaexf1.aspx





Mx
MVP C#
 
Messages postés
111
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
27 avril 2010

tu veux modifier les valeurs dans ton datatable et pas sur la grid ? ou inversement ?

Un truc du genre tu saisie un '1' et ca te met 'true' dans ton datatable ?
Messages postés
135
Date d'inscription
mercredi 8 novembre 2000
Statut
Membre
Dernière intervention
11 mai 2007
1
Oui , pour 1 j'aimerai que la valeur afficher dans le datagrid soit 'True'  .


Pour cela , j'aimerai effectuer le moins de modification possible, et surtout ne pas touché a ma table dans la bdd.

J'aimerai simplement changer l'affichage dans le datagrid, si il faut
passer par un datatable ou par le dataset , j'y passerai . . . mais le
but est simplement de remplacer 1 par 'True' dans le datagrid.
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
18
commence par mettre 0 la place de 2 pour false...

ensuite, tu met ton databinding sur ta datatable...en framework normal je sais pas si la conversion en bool se fait automatiquement pour les checkbox ou pas, mais si cest pas le cas, tu vas devoir rajouter une boucle après l'intialisation de ton datagrid pour faire un
MaColonne[i].Checkbox.Checked = Convert.ToBool(ValeurEntiere)
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
18
et ensuite a chaque modification d'état d'une de tes checkbox, tu le répercute dans le base en t'abonnant a l'évènement de modification d'état des checkbox de ton datagrid. (l'edit, ca manque....)
Messages postés
111
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
27 avril 2010

Heu ...
Il n'utilise pas de checkBox il me semble. Mais ca serait plus sympa :)

Et ou peux tu faire un Convert.ToBool ?
Car en faisant "MaColonne[i].Checkbox.Checked" ca soupsonne de remplir le grid ligne par ligne ou de parcourir toutes les lignes après  :x
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
18
ce qu'il y a cest que je ne suis pas sur a 100% que le convert.ToBool se fasse d'office sur les entiers lors du databinding. donc ce qui risque de se passer s'il ne se fait pas de lui meme, le datagrid sera rempli MAIS les checkbox ne seront pas cochées (encore une fois, cest si le convert n'est pas fait doffice, donc je précise ca pour pallier au cas ou ca ne fonctionnerais pas bien...mais je pense malgré tout qu'avec 0 et 1, ca doit passer sur les checkbox).
donc il faut cocher les checkbox une a une apres (alors que tout le reste du datagrid est remplit correctement).
Messages postés
135
Date d'inscription
mercredi 8 novembre 2000
Statut
Membre
Dernière intervention
11 mai 2007
1
effectivement je n'ai pas de checkbox . . . je veux juste remplacer les
1 par true et les 2 par false dans une colonne du datagrid  .
Messages postés
111
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
27 avril 2010

En fait je ne vois pas trop l'utilité de faire ca si tu n'utilise pas de checkbox ou combobox.

Car afficher la chaine "true" ou "false" dans une grid c'est pas super esthétique. De plus si tu veux modifier les valeur tu devra saisie true ou false a la main sans faute, ou gérer l'erreur ce qui est très moche.
Moi ce que je te conseille maintenant c'est que si effectivement l'user peut modifier cette valeur, tu place une colonne de combo et chaque combo est lié à une source où ton DisplayMember est sur "Oui" ou "Non" et ton ValueMember sur 1 ou 2. Dans ce cas, tout marchera facilement sans faire de conversion ni rien :)
Messages postés
135
Date d'inscription
mercredi 8 novembre 2000
Statut
Membre
Dernière intervention
11 mai 2007
1
L'utilisateur ne peut pas modifier les colonnes, mais seulement les lire.

je cherche a changer ces valeurs de facon a ce que ce soit plus lisible
, car 1 ou 2 c'est pas tres parlant alors que True ou False c'est mieux
.
Messages postés
111
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
27 avril 2010

Dans ce cas si il n'y a pas de modification possible, parcourir ta grid et remplacer les 1 en true et 2 en false est peut etre le plus simple.
Messages postés
135
Date d'inscription
mercredi 8 novembre 2000
Statut
Membre
Dernière intervention
11 mai 2007
1
peut etre mais je ne sais comment faire .. . . a moins de changer la
requete sql lors de l'injection des données dans le dataset ??

 la solution de chan ger dans le datagrid me parait meilleure . . .?
Messages postés
111
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
27 avril 2010

Oui remplace directement dans la grid.
Pour info, t'utilises une DataGrid (framework 1) ou DataGridView (framework 2).
Messages postés
135
Date d'inscription
mercredi 8 novembre 2000
Statut
Membre
Dernière intervention
11 mai 2007
1
Datagrid (framework 1)
Messages postés
111
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
27 avril 2010

Faudra m'expliquer un jour pourquoi les gens continuent de bosser sur le Framework 1 :) Y a tellement plus de chose dans le 2.

^^
Messages postés
135
Date d'inscription
mercredi 8 novembre 2000
Statut
Membre
Dernière intervention
11 mai 2007
1
Faudra demander a mon patron . . . :-) , car si je pouvais biensur j'utiliserai le 2
Messages postés
111
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
27 avril 2010

Justement ca peut être un sujet de proposition de ta part de passer en v2 :p
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
18
juste pour information (et ptetre aussi un peu par maniaquerie de ma part ^^), de tous temps, false = 0, true = tout sauf 0....
bref, pour pas te casser la tete avec les conversions de chiffres en bool, remplace ton 2 dans la base par un 0....apres si tu veux un true ou false, tu a juste a faire un Convert.ToBool(MonIntBoolean).ToString()...cest bcp plus simple et clair....et aussi vachement plus carré...la tu vas te faire un if pour savoir ce que tu dois retourner, etc...
Messages postés
135
Date d'inscription
mercredi 8 novembre 2000
Statut
Membre
Dernière intervention
11 mai 2007
1
Je ne dois en aucun cas touché aux valeurs de la base mais simplement
convertir certaine valeur pour les rendrent plus lisible et plus
compréhensive.

C'est pour ca que je cherche a faire les modification dans le datagrid . . .