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)

dimanche 3 août 2008 à 22:38:42 | UpdatePanel et validateurs (encore !)

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


lundi 4 août 2008 à 11:29:47 | Re : UpdatePanel et validateurs (encore !)

jesusonline

Membre Club Administrateur CodeS-SourceS
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

lundi 4 août 2008 à 22:06:15 | Re : UpdatePanel et validateurs (encore !)

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


lundi 4 août 2008 à 22:15:58 | Re : UpdatePanel et validateurs (encore !)

jesusonline

Membre Club Administrateur CodeS-SourceS
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

lundi 4 août 2008 à 22:20:41 | Re : UpdatePanel et validateurs (encore !)

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



Cette discussion est classé dans : textbox, données, validation, updatepanel, valideurs


Répondre à ce message

Sujets en rapport avec ce message

raffréchir les données après validation d'un formulaire [ par Cjulien ] voici mon souci: je remplis un formulaire puis lorsque je le valide, une page intermediaire rempli ma base de donnée et une fois ces données rajoutées Pb validation chez mon hebergeur [ par jagxx ] Langage : Asp.netBonjour,J'utilise un controle serveur de validation "RequierdFieldValidator" avec un TextBox. Sur ma machine tous fonctionne bien. Lo erreur <%@ Page EnableEventValidation="true" %> [ par babybutt ] Bonsoir,Depuis tout à l'heure j'ai cette erreur sur mon projet, je ramène le boulot à la maison parce que j'ai une présentation du projet lundi devant textbox et base de données [ par marhoa ] Voilà j'essaie de mettre dans un texbox les données récupérées gràce à une requète mais les textbox n'ont pas de propriété telles "DataSource" ou "Dat remplir un textbox en password [ par Troyan ] bonjour,quand je permet la modifs des données personelle à un client je pre rempli ces champs !mais a ma grande surprise il ne rempli la les champs pa Données en TextBox [ par Crazyblood ] bonjour, j'ai un pb lors du chargement d'une page asp qui contient le caractère "<" en debut de ligne suivi d'autres caractère dans une TextBox (carac Datagrid [ par Nazar76 ] Bonjour à tous,Voilà,  je débute en ASP.NET et  je dois développer une application web.J'ai à réaliser un Datagrid qui se remplit automatiquement à pa Update GridView avec un UpdatePanel et un Timer [ par fabienfs ] Bonjour,Tout d'abord, joyeux noël ! Je n'arrive pas à faire un update des données se trouvant dans ma gridview avec un UpdatePanel et un Timer en Ajax Comment récupérer les données des Control dynamique de mon PlaceHolder???? [ par yanis7518 ] Salut ALL!!!!Tout est dans le titre Voila un peu plus de détails. Je crée des control dynamiquement( texbox) dans un placeholdervoila mon code lorsque UpdatePanels imbriqués [ par calagan9 ] Bonjour à tous,je viens a vous car je ne parviens pas à me sortir d'une situation pour le moins enervante.Je construis une page dans lauqelle l'utilis


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,187 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.