Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Outils > XMLRAD
XMLRAD Environnement de développement Web XML/XSL. Avant de poster -> F.A.Q XMLRAD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/10/2007, 22h40   #1
Membre éprouvé
 
Inscription : mars 2002
Messages : 516
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 516
Points : 483
Points : 483
Envoyer un message via MSN à Sylvain James
Par défaut Pivot, Checkbox et Match : un bon cocktail

Ce post pour parler d'un cas pratique plutôt intéressant mettant en oeuvre XMLC_Pivot, les champs de formulaire de type checkbox et l' XMLInstruction Match.

J'ai une page qui présente une liste de lignes. Sur chaque ligne, on trouve une case à cocher, un champ de saisie, et une combo (disons que globalement, chaque ligne comprend plusieurs éléments de formulaires).

Afin de poster l'intégralité de ces lignes via un formulaire, j'ai ajouté un pivot XMLC_Pivot = nom de mon pivot.

Dans le XMLService invoqué par le formulaire en question, j'ai ajouté une XMLInstruction Match. Cette instruction va matcher le pivot tout en alimentant le context pour chaque item rencontré.
Imaginez que sur la première ligne, la checkbox était cochée avec value = 1.
A ce stade, le context va contenir la valeur 1 pour le nom de la checkbox.

L'instruction match passe à la ligne (item) suivante. Admettons que sur cette ligne, la checkbox n'était pas cochée. He bien dans ce cas particulier, le formulaire ne transmet pas ni le nom ni la valeur de la checkox.
Ce qui fait que notre instruction match, ne rencontrant pas d'élément correspondant au nom de la checkbox, ne renseigne rien à son sujet dans le context.
Ainsi le context contient toujours la valeur de la ligne précédente (cochée= 1)... alors qu'en réalité, c'est l'inverse ! Capito ?

Une solution possible pour rémédier à ce cas :
Implémenter un gestionnaire Match.BeforeInternalInstruction (ou After) et coder
Code :
Context.SetValue("CHECKBOXNAME", "");
Si vous avez des remarques ou rencontré des situations similaires... ?
__________________
.NET / ASP.NET MVC / Delphi / XMLRAD / XSL / Technos Web

Mon Blog : http://blog.developpez.com/index.php?blog=89
Mes Articles : http://sjames.developpez.com/
Rubrique XMLRAD: http://xmlrad.developpez.com
Sylvain James est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2007, 09h01   #2
Membre confirmé
 
Avatar de Jeweller
 
Inscription : août 2003
Messages : 354
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 354
Points : 226
Points : 226
Salut!

En lisant ton post, je me suis dis "Tiens, je n'ai jamais constaté ce phénomène... bizarre..." Donc pour vérifier tes dires j'ai fait le test chez moi et forcément je constate le même phénomène! Donc je te dis MERCI! Tu viens de me permettre de corriger un cholie beug que personne n'avait encore vu!
Pour ce qui est de la solution, je n'ai pas d'autres idées pour le moment.

Michael
Jeweller est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2007, 10h44   #3
RDM
Membre Expert
 
Inscription : mars 2002
Messages : 1 426
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 1 426
Points : 1 546
Points : 1 546
Envoyer un message via ICQ à RDM
cela ne ressemble pas à ce thread? :
http://www.developpez.net/forums/d2010/webmasters-developpement-web/outils/xmlrad/checkbox/

mis à part ca, je comprend que ca puisse poser problème.

dans la version 2007 une nouvelle instruction Match a vu le jour qui se fait par description des champs attendu dans le context
Vous spécifiez la Source Context et vous décrivez les champs.
par exemple si vous avez des champs de ce type:
ORGANIZATION[1].ORG_ID
ORGANIZATION[1].ORG_NAME
ORGANIZATION[2].ORG_ID
ORGANIZATION[2].ORG_NAME
Le Record Name est ORGANIZATION
vous ajoutez les champs ORG_ID et ORG_NAME dans field
le record Count pemet de spécifier un nombre Max de records sur le quel il itère pour la recherche des champs:
si le nombre (exemple 10) est spécifié, il va faire ORGANIZATION[1].ORG_ID à ORGANIZATION[10].ORG_ID et même si le champ est vide ou non transmis
si le nombre n'est pas spécifié il va s'arrêter quand aucun champ n'est trouvé dans le Context
De plus si le champ n'existe pas dans le context, il met le champ à blanc !
l'ancienne méthode correspond a une Source Input.
__________________
RDM
Tout Est Relatif
Rubrique XMLRAD: http://xmlrad.developpez.com
FAQ XMLRAD: http://xmlrad.developpez.com/faq/
RDM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2007, 10h59   #4
Membre confirmé
 
Avatar de Jeweller
 
Inscription : août 2003
Messages : 354
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 354
Points : 226
Points : 226
Fichtre, un thread qui remonte à janvier 2003! Impressionnant. Mais c'est ca effectivement
Merci pour l'info sur la 2007.

Michael
Jeweller est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2007, 11h14   #5
Membre éclairé
 
Inscription : janvier 2003
Messages : 284
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 284
Points : 311
Points : 311
Envoyer un message via MSN à Nicolas.Cogi
Pour compléter le post de RDM sur le nouveau match :
  • Plus besoin de XMLC_Pivot dans le formulaire.
  • Possibilité d'imbriquer les Match pour gérer les hiérarchie ORG[1].PSN[1].PSN_FIRST_NAME
  • Permet de matcher sur des CommaText (test@test.com;test2@test.com; ). Pratique pour matcher sur un array.join(";") javascript !
__________________
Nicolas
Nicolas.Cogi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2007, 17h04   #6
Membre éprouvé
 
Inscription : mars 2002
Messages : 516
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 516
Points : 483
Points : 483
Envoyer un message via MSN à Sylvain James
Citation:
Envoyé par RDM Voir le message
cela ne ressemble pas à ce thread? :
http://www.developpez.net/forums/showthread.php?t=2010
ouah ! ...oui oui c'est bien ça :-)

Citation:
dans la version 2007 une nouvelle instruction Match a vu le jour qui se fait par description des champs attendu dans le context
...
si le nombre (exemple 10) est spécifié, il va faire ORGANIZATION[1].ORG_ID à ORGANIZATION[10].ORG_ID et même si le champ est vide ou non transmis
si le nombre n'est pas spécifié il va s'arrêter quand aucun champ n'est trouvé dans le Context
De plus si le champ n'existe pas dans le context, il met le champ à blanc !
l'ancienne méthode correspond a une Source Input.
Excellent, ça sera en effet plus intuitif que le Pivot.
Mais du coup ça me fait penser à 2 choses :
- Est ce que l'itération sera forcément incrémentale numériquement parlant (ITEM[x]... ITEM[x+1] etc.) ? Car jusqu'à maintenant le pivot nous permettait d'itérer quelque soit la valeur de l'indice, et c'était plutôt pratique dans certains cas.
- Tu dis que si le context est vide, il mettra le champ à blanc, mais dans mon cas exemple, le context contiendrait toujours la dernière valeur rencontrée, non ?
__________________
.NET / ASP.NET MVC / Delphi / XMLRAD / XSL / Technos Web

Mon Blog : http://blog.developpez.com/index.php?blog=89
Mes Articles : http://sjames.developpez.com/
Rubrique XMLRAD: http://xmlrad.developpez.com
Sylvain James est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2007, 17h05   #7
Membre éprouvé
 
Inscription : mars 2002
Messages : 516
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 516
Points : 483
Points : 483
Envoyer un message via MSN à Sylvain James
Citation:
Envoyé par Nicolas.Cogi Voir le message
Pour compléter le post de RDM sur le nouveau match :
  • Plus besoin de XMLC_Pivot dans le formulaire.
  • Possibilité d'imbriquer les Match pour gérer les hiérarchie ORG[1].PSN[1].PSN_FIRST_NAME
  • Permet de matcher sur des CommaText (test@test.com;test2@test.com; ). Pratique pour matcher sur un array.join(";") javascript !
Mortel :-)
__________________
.NET / ASP.NET MVC / Delphi / XMLRAD / XSL / Technos Web

Mon Blog : http://blog.developpez.com/index.php?blog=89
Mes Articles : http://sjames.developpez.com/
Rubrique XMLRAD: http://xmlrad.developpez.com
Sylvain James est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/10/2007, 10h26   #8
RDM
Membre Expert
 
Inscription : mars 2002
Messages : 1 426
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 1 426
Points : 1 546
Points : 1 546
Envoyer un message via ICQ à RDM
Citation:
Excellent, ça sera en effet plus intuitif que le Pivot.
Mais du coup ça me fait penser à 2 choses :
- Est ce que l'itération sera forcément incrémentale numériquement parlant (ITEM[x]... ITEM[x+1] etc.) ? Car jusqu'à maintenant le pivot nous permettait d'itérer quelque soit la valeur de l'indice, et c'était plutôt pratique dans certains cas.
pour ca il faut mettre le MaxRecords pour passer certaines valeurs qui ne serait pas remplies

Citation:
- Tu dis que si le context est vide, il mettra le champ à blanc, mais dans mon cas exemple, le context contiendrait toujours la dernière valeur rencontrée, non ?
Si ORGANISATION[3].ORG_ID n'existe pas il met ORG_ID à ''
donc l'ancienne valeur de ORG_ID n'est plus dans le context
__________________
RDM
Tout Est Relatif
Rubrique XMLRAD: http://xmlrad.developpez.com
FAQ XMLRAD: http://xmlrad.developpez.com/faq/
RDM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/10/2007, 10h39   #9
Membre éprouvé
 
Inscription : mars 2002
Messages : 516
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 516
Points : 483
Points : 483
Envoyer un message via MSN à Sylvain James
Merci :-)
__________________
.NET / ASP.NET MVC / Delphi / XMLRAD / XSL / Technos Web

Mon Blog : http://blog.developpez.com/index.php?blog=89
Mes Articles : http://sjames.developpez.com/
Rubrique XMLRAD: http://xmlrad.developpez.com
Sylvain James est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h44.


 
 
 
 
Partenaires

Hébergement Web