Datagridview & problème entre type requis et type tapé [Résolu]

Messages postés
29
Date d'inscription
mardi 15 décembre 2009
Dernière intervention
12 novembre 2010
- - Dernière réponse : Mayzz
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Dernière intervention
26 novembre 2013
- 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 :)
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Dernière intervention
26 novembre 2013
3
Merci
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.

Merci Mayzz 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de Mayzz
Messages postés
29
Date d'inscription
mardi 15 décembre 2009
Dernière intervention
12 novembre 2010
0
Merci
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.
Commenter la réponse de dullbrain
Messages postés
29
Date d'inscription
mardi 15 décembre 2009
Dernière intervention
12 novembre 2010
0
Merci
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 :)
Commenter la réponse de dullbrain
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Dernière intervention
26 novembre 2013
0
Merci
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.
Commenter la réponse de Mayzz

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.