Bonjour,
J'aimerais savoir si il y a un moyen de formatter/parser les valeurs d'une colonne d'une DataGridView bindée à une datasource.
Par exemple, la DataGridView est bindée à une liste de produits. Un objet produit possède une propriété prix qui est de type float. Dans la colonne prix de la DataGridView on souhaite afficher le prix suivit de la devise. Je sais que cela est possible à faire avec une textbox par exemple. Il suffit d'écrire cela :
Mais est ce possible quand les sources sont des collections comme dans le cas d'une DataGridView ?
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 ... Binding b = new Binding("Text", order, "Price"); b.Format += new ConvertEventHandler(b_Format); b.Parse += new ConvertEventHandler(b_Parse); textBox1.DataBindings.Add(b); } void b_Parse(object sender, ConvertEventArgs e) { e.Value = decimal.Parse((string) e.Value, NumberStyles.Currency); } void b_Format(object sender, ConvertEventArgs e) { e.Value = ((decimal) e.Value).ToString("C"); }
D'autre part j'ai une propriété de type Quantity dans ma classe Product et je souhaiterais afficher dans une des colonnes de ma DataGridView, non pas la valeur de sa méthode ToString() mais l'une de ces propriétés, en l'occurrence sa propriété Value de type float. Est ce possible ?
Pour l'instant j'ai réussi à résoudre ces 2 problèmes en écrivant ma CustomSourceView (classe implémentant ITypedList) et en récrivant les propertyDescriptor dans la méthode GetItemProperties(). Mais j'aurais aimé savoir si il y une méthode plus simple/traditionnelle de procéder pour ces 2 cas de figures. Y t-il des pros du databinding dans le coin ?
Merci d'avance pour vos suggestions.
mathmax
Partager