begin process at 2008 09 05 22:16:24
1 237 533 membres
473 nouveaux aujourd'hui
14 313 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : UpdatePanel et validateurs (encore !) [ Web 2.0 / Ajax ] (SuperBouly)

UpdatePanel et validateurs (encore !) le 03/08/2008 22:38:42

SuperBouly
Membre Club

Bonjour,

j'ai lu la très bonne information (comme toujours): http://blogs.codes-sources.com/cyril/archive/2007/02/18/validator-et-updatepanel.aspx 
 concernant le bug de validation des updatePanels mais...
J'ai eu un autre ennui avec la validation et un UpdatePanel (je simplifie au maximum):

J'ai une chechboxList (autoPostBack=True) qui commande le contenu d'un updatePanel où des textBox correspondant aux cases cochées apparaissent.

Si on coche 3 cases, par ex., Il apparaît 3 textbox et leurs valideurs, créés dynamiquement.

Un Bouton enregistre les données.

 

Si je décoche une case créée précédemment, la textbox correspondante disparaît correctement,  le valideur est également supprimé par le code. Mais je ne peux enregistrer, car la validation échoue.

Le valideur (RequireFieldValidator) ne semble pas supprimé, et empêche l'enregistrement: le serveur me demande de remplir la textbox qui a été supprimée...

 

J'ai longtemps cherché l'erreur de mon code, mais il ne semble pas y en avoir:

Si je déclare la checkBoxList en asyncPostBackTrigger, ça ne marche pas.

En revanche, si je la déclare en postbackTrigger (ou pas du tout), ça marche très bien, j'ai un postback classique, et pourtant le code est parcouru de la même façon au débogage...

 

Je m'en suis tiré en supprimant la création dynamique des valideurs et en effectuant une vérification des données juste avant l'enregistrement des données.

Quelqu'un a-t-il entendu parler de ce genre d'ennui, qui ne semble pas le même que celui décrit dans le blog (V. ci-dessus).

Tout se passe comme si le serveur gardait en mémoire la liste des validations à effectuer , sans l'actualiser. Y a-t-il un moyen de l'actualiser ,

merci de vos lumières

SuperBouly


Re : UpdatePanel et validateurs (encore !) le 04/08/2008 11:29:47

jesusonline
Membre Club
(Admin CS)
Réponse acceptée !
Bonjour,

il y a déjà un mot qui me fait peur : "contrôle dynamique". Je suis contre les contrôles dynamiques, cela pose que des problèmes s'ils sont mal ajoutés, dans la majorité des cas on peut s'en passer, peux être peux tu utiliser un repeater que tu bind sur un truc à la con genre un int[] histoire de repeter tes items.
Partons du principe que l'ajout dynamique ne pose pas de problème.

Le problème que tu décris me semble normal. De mémoire lorsque l'on rajoute un validateur coté client on renseigne un tableau (coté client) qui contient tous les validateurs lorsque tu fais un submit, ASP.net (coté client donc javascript) va valider tous les validateurs (du même validationgroup et sauf si causesvalidation="false"). Le problème décrit dans mon post vient du fait que lorsqu'un validateur arrive via un updatepanel, il n'est pas rajouté dans ce tableau coté client et la validation n'est donc pas effectué correctement. La solution a ce problème a été de modifier les validateurs pour se réinscrire dans le tableau de validateur après un asyncpostback.
Lorsque tu supprimes un contrôle, celui-ci ne peut logiquement plus notifier au client qu'il n'existe plus.
D'après ce que tu décris, si le validateur n'est plus présent alors la validation échoue, ce qui me semble stupide. Pour régler ce problème, il faut confirmer ce que je suppose (je n'ai rien vérifié :)) et ensuite tu pourras faire du tagmapping pour modifier les fonctions de validations coté client, cela demande un petit peu de boulot et surtout une bonne connaissance du fonctionnement de la validation coté client.
L'autre "solution" est de passer par un customvalidator et ne pas se servir des requiredfieldvalidator ainsi tu auras le comportement souhaités vu que c'est toi qui le codera :)

Pour info, lorsque tu fais un classique postback, le tableau de validateur coté client se recompose complétement et tu n'as donc plus ce genre de problème.


Cyril - MVP ASP.net - MCPD ASP.net & MCTS SQL - Consultant indépendant

Re : UpdatePanel et validateurs (encore !) le 04/08/2008 22:06:15

SuperBouly
Membre Club

bonsoir,
merci pour ta répose détaillée.

J'ai essayé le controle repeater sur un exemple simple, C'est très intéressant, merci du tuyau, je n'y avais même pas pensé!
Cependant , il provoque toujours l'erreur de validation: le débogueur s'arrête dans WebResource.axd:

function ValidatorGetValue(id) {
var control;
control = document.getElementById(id); // ici, control=Nothing, car la textbox n'existe plus
if (typeof(control.value) == "string") //bien sûr cette instruction plante
{
return control.value;
}
return ValidatorGetValueRecursive(control);
}

je ne vois pas bien comment je pourrais y changer qqchose...c'est quoi le tagMapping?

A noter que la version "contrôles dynamiques" plante de la même façon, mais, quand on passe le débogage client, les valideurs continuent à chercher la textbox et provoquent un page.isValid=False coté serveur (tiens?). Donc double ennui !
Je crois que je vais opter pour la validation par une sub toute faite exprès.
Je vais également creuser un peu du coté du repeater, mais en fait, c'est un peu + compliqué, car j'ai 2 checkBoxlist, qui fabriquent un tableau de textbox avec des entêtes de lignes et de colonnes à géométrie variable, le tout dans un formView...Je vais essayer des UserControl emboîtés.
on se complique la vie, quelquefois!,

SuperBouly


Re : UpdatePanel et validateurs (encore !) le 04/08/2008 22:15:58

jesusonline
Membre Club
(Admin CS)
tagmapping >> http://blogs.developpeur.org/cyril/archive/2006/04/12/Le-tagMapping-comment-changer-les-comportements-des-controles-web-en-quelques-lignes.aspx

Si tu n'as pas le même comportement avec un repeater versus controles dynamique cela veut "forcément" dire que tu ne rajoutes pas tes contrôles correctement, les controles dynamiques sont pénible pour la validation car généralement ils ne sont pas rajoutés là où il faut.


Cyril - MVP ASP.net - MCPD ASP.net & MCTS SQL - Consultant indépendant

Re : UpdatePanel et validateurs (encore !) le 04/08/2008 22:20:41

SuperBouly
Membre Club
Tu as sûrement raison, c'est que mon affaire n'est pas simple...
j'ai, entre autres, une sub parcourue une fois de trop par exemple! Je crois que je vais tout reprendre.
Merci pour ton aide

SuperBouly


Classé sous : textbox, données, validation, updatepanel, valideurs

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS