Datagridview & problème entre type requis et type tapé

Résolu
dullbrain Messages postés 29 Date d'inscription mardi 15 décembre 2009 Statut Membre Dernière intervention 12 novembre 2010 - 10 juin 2010 à 23:20
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 - 11 juin 2010 à 00:38
Bonsoir à tous,

Je travaille actuellement sur une base de données, et je charge sans problème un datagridview. Ce dernier contient quelques colonnes de différents types, string, décimaux, etc, tels que définis lors de la création de la base de données Access.

Je voudrais que mon utilisateur puisse modifier directement depuis le datagridview, et c'est là que les choses se gâtent. Tant que je rentre des valeurs de type tel que défini pour la cellule, ça va, sinon, gros message d'erreur. Or justement, je n'ai même pas le temps de tester si ce que je viens de rentrer (qui est sciemment d'un type erroné) est du bon type ou pas.
J'avais à cet effet codé ce petit bout de programme :

For j As Integer = 0 To madatatable.Columns.Count - 1
For t As Integer = 0 To madatatable.Rows.Count - 1
If typechamps(j) IsNot DataGridView1.Rows(t).Cells(j).Value.GetType Then
Exit Sub
End If

où typechamps est un tableau contenant les types des colonnes de la table, ce tableau est bon, je l'ai testé par msgbox.

je ne peux même pas savoir si ce code marche, puisque le système bondit dès avoir rentré une lettre dans une cellule censée contenir un nombre.

Si quelqu'un avait une idée, je lui en serait reconnaissant !

Bonne soirée et merci d'avance :)

4 réponses

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
10 juin 2010 à 23:59
Salut,

Des fois, il ne faut pas se casser la tête, met un simple messagebox dans l'événement DataError du DataGridView, de toute façon, l'utilisateur n'est pas stupide, si il voit une case prix, par exemple, et qu'un message d'erreur s'affiche le prévenant qu'il à fait une saisie invalide, il va bien deviner qu'il doit entrer un chiffre...

Mais si tu tiens vraiment à informer l'utilisateur de l'erreur, du type érroné saisis et du type de donnée qu'il doit saisir, alors essaye de voir également dans l'événement DataError, le type d'exception qui se produit (via e.Exception) et avec un Select Case affiche me message personnalisé qui convient.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
3
dullbrain Messages postés 29 Date d'inscription mardi 15 décembre 2009 Statut Membre Dernière intervention 12 novembre 2010
11 juin 2010 à 00:04
Merci de ta réponse si rapide !

Donc en fait il faudrait que je redéfinisse cette méthode DataError ?

J'ai trouvé cette syntaxe sur msdn :
Private Sub DataGridView1_DataError(ByVal sender As Object, _
ByVal e As DataGridViewDataErrorEventArgs) _
Handles DataGridView1.DataError

juste pour confirmation, c'est bien ce dont tu parlais ?
Si oui je la redéfinis juste, parce qu'en l'état actuel des chose le message d'erreur est long comme mon bras.

Sinon j'avais pensé à faire un DataGridView en lecture seule et modifier au coup par coup via des textbox et autres outils, mais question maniabilité et rapidité pour un outil professionnel c'est pas génial.
0
dullbrain Messages postés 29 Date d'inscription mardi 15 décembre 2009 Statut Membre Dernière intervention 12 novembre 2010
11 juin 2010 à 00:14
Désolé du double message, j'ai donc redéfini cette gestion d'exception par une simple messagebox indiquant un type de donnée incompatible.

Merci de ton aide et bonne nuit :)
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
11 juin 2010 à 00:38
Pas de quoi, Quand on peut rendre service

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
Rejoignez-nous