Sujet : [Vb.Net][1.1] Champ NumericUpDown et DataBinding => bogué ?

Bonjour, bonjour,

Je n'attends pas de solution ici. J'ouvre cette discussion uniquement pour signaler un problème sur lequel je suis tombé et qui m'a causé une sacrée de perte de temps.

Ce problème concerne l'utilisation du champ NumericUpDown lorsqu'il est branché sur un champ d'une base de données.

L'environnement est le suivant : WinXp Home SP2, Visual Basic .Net 2003, FW 1.1 SP1.

Prenons un contexte d'exemple pour illustrer le problème : une fenêtre est composée d'une listBox et de champs (TextBox, NumericUpDown, ComboBox, etc...). La listBox contient une liste d'enregistrements d'une table. Les champs sont tous branchés sur des champs de la table grâce à la propriété DataBinding. Le fonctionnement est simple : si l'on sélectionne un élément dans la listBox, tous les champs se mettent à jour tous seul avec les valeurs de l'enregistrement courant. Je précise que les propriétés des champs ont leurs valeurs par défaut, mise à part la propriété DataBinding.

Vous en conviendrez, ce que je viens de décrire est un fonctionnement ultra classique et largement utilisé dans bon nombre d'applications.

Maintenant, je prends un NumericUpDown présent parmi les objets que j'ai placé dans la fenêtre. Sa propriété Minimum qui définit la valeur minimum qu'il peut prendre vaut 0. Je change cette valeur pour la mettre à 1 parce que je ne veux pas que mon utilisateur puisse mettre 0 pour ce champ. Je recompile. J'ouvre la fenêtre concernée : les données ne s'affichent plus dans la listBox !. C'est à n'y rien comprendre...et d'ailleurs je n'y comprends rien wink...

Le constat est le suivant : si l'on définit une valeur minimale > 0 d'un NumericUpDown qui est branché sur un champ de base de données, il se produit un événement dont je ne connais pas la cause qui plante le chargement des enregistrements. ! Cela m'a valu quelques heures de questionnement intense sur ce que j'avais bien pu écrire dans mon code pour que ce problème se produise. J'en suis arrivé à refaire une fenêtre entièrement et en plaçant chaque objet un par un, en recompilant à chaque modification, pour pouvoir déterminer la source du problème...et croyez-moi, quand on en arrive là, ça bouffe du temps !!

Une autre fois, j'étais tombé sur ce problème mais avec la valeur maximale. Si je chargeais un enregistrement dont la valeur du champ était supérieure à la valeur max définie, il se produisait la même chose. Je trouve moyennement normal que tout se bloque lorsque cela se produit ; bref passons. Mais là, j'ai vérifié, je suis certain que les valeurs que je charge sont bien comprises dans l'intervalle de valeurs de mon NumericUpDown.

Ma solution est simple : je laisse la propriété Minimum à 0 pour ne pas contrarier Vb et je gère moi-même la limite inférieure avec une toute petite procédure appelée à chaque changement de la valeur du champ.

Voilà, vive Vb ! Je serais bien sûr ravi de voir une réponse à ce message pour me montrer que j'ai tord et que je me trompe royalement...

-------------------------------
"Keyboard not detected, press a key to continue..."

WWW

Re : [Vb.Net][1.1] Champ NumericUpDown et DataBinding => bogué ?

Plus ça va et plus je suis content de ne pas en faire !!

----------------------------------------------------------------------------------------------------------------------------
On peut être intelligent toute sa vie et stupide un instant.

WWW