DatagridView

Résolu
vbasamuel Messages postés 7 Date d'inscription mardi 30 septembre 2008 Statut Membre Dernière intervention 9 novembre 2012 - 7 nov. 2012 à 12:10
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 - 8 nov. 2012 à 19:17
Bonjour,

je suis en apprentissage Visual Basic 2010 express.

j'ai construit un windows form qui m'affiche une table access.

Mon but est d'afficher le contenu pour en faciliter la modification (ni suppression, ni ajout de nouvelle ligne). jusque là aucun problème.

Cependant des champs de la table affiche une valeur que je voudrais "transformer" dans une autre colonne indépendante de la table.
Exemple si valeur champ = 458752 de la colonne Price_Unit, alors affiche
dans colonne Valeur (colonne que j'ai ajouté manuellement dans le dataset) le texte : "euro"

ma question est : comment dois-je procéder pour faire un test (IF - THEN) sur une cellule d'une colonne issue de la table access vers une cellule d'une colonne ajouter au dataset?



Samuel

3 réponses

Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
7 nov. 2012 à 20:56
Bonjour et bien je te propose de poster ce message dans le forum VB...
Là tu es en C#!
Accueil > Forum > C# > Windows > Formulaire / Winforms / Controls > DatagridView


Whismeril
3
Si tu veux faire des test si champs 1 > champs 2 ou n'importe quoi il faut savoir que le if ne prend que des Int donc pour faire des test il faut que tu cast tes champs en int
Regarde et lis bien ce sujet. Le probleme que tu a est a peu pres la meme chose que moi .
Ici
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
8 nov. 2012 à 19:17
Bonsoir
@TheFolin, l'instruction if ne prend pas que des int, dans ton cas tu essayais d'abord de comparer 2 cellules qui ne sont pas des objets comparables, puis tu as voulu comparer les contenu par l'intermédiaire des propriétés Value ce qui est déjà mieux mais là encore le type object n'est pas comparable.
Il t'a donc fallu caster tes .Value en int, mais en double ça aurait aussi fonctionné.

@vbsamuel

Je ne connais pas le VB.Net et VB6 est bien loin.

En C#, je chargerais le contenu de ta table dans une liste d'objet perso adapté. Dans cet objet j'aurais crée une propriété supplémentaire qui retournerais le calcul dont tu as besoin. Et enfin je mettrais la liste en DataSource de ton datagridview. En fait, ainsi le datagirdview ne sert que d'affichage et classe métier fait les calculs.

Voici un exemple, si tu as une table contenant des noms, prénom et dates de naissance et que tu veuilles afficher l'âge.


class Personne//là ma classe métier
{
   public string Nom {get; set;}
   public string Prenom {get; set;}
   public DateTime DateNaiss {get; set;}
   public int Age
   {
       get { return DateTime.Now.Year - DateNaiss.Year;}
   }

}

//tu charges tes données dans une List
List personnes = new List();
//le code qui va bien pour remplir


//tu affectes la liste
DataGridView1.Datasource = personnes;



Et comme ça tu as une colonne Age.

Maintenant je ne sais pas transcrire ça en VB autrement qu'avec un traducteur, ça donne ça:

Class Personne
'là ma classe métier
Public Property Nom() As String
Get
Return m_Nom
End Get
Set
m_Nom = Value
End Set
End Property
Private m_Nom As String
Public Property Prenom() As String
Get
Return m_Prenom
End Get
Set
m_Prenom = Value
End Set
End Property
Private m_Prenom As String
Public Property DateNaiss() As DateTime
Get
Return m_DateNaiss
End Get
Set
m_DateNaiss = Value
End Set
End Property
Private m_DateNaiss As DateTime
Public ReadOnly Property Age() As Integer
Get
Return DateTime.Now.Year - DateNaiss.Year
End Get
End Property

End Class


'Déclaration de la liste
Dim personnes As New List(Of Personne)()
'affectation du datasource
DataGridView1.Datasource = personnes

Whismeril
0
Rejoignez-nous