PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WEBDEV 2024 → ZoneRépétée et modification d'un enregistrement Zone Répétée
ZoneRépétée et modification d'un enregistrement Zone Répétée
Débuté par Vincent Lecomte, 22 avr. 2016 09:32 - 4 réponses
Membre enregistré
240 messages
Popularité : +3 (3 votes)
Posté le 22 avril 2016 - 09:32
J'ai sur une page AWP une Zone Répétée avec des interrupteurs.
Dans le code serveur "Modification de ma case à cocher", j'y fais une modification d'un fichier.
En mode normal => ça marche 3-4 fois puis je reçois l'erreur 75 "ERR_POSITIONNEMENT_TABLE_AJAX_AWP")
Si je coche "Code AJAX" pour le code de modification du bouton, j'ai tout de suite cette erreur.
L'enregistrement du fichier est bien modifié.

Qu'est-ce que je loupe ?
Merci bien :-)

--
Vincent
Membre enregistré
240 messages
Popularité : +3 (3 votes)
Posté le 22 avril 2016 - 09:46
Ca va même plus loin que ça... Sans code , ça produit l'erreur aussi !!
Mon but étant de modifier les droits d'accès de l'utilisateur sans avoir à rafraichir la page.

Note : j'ai essayé un ZoneRépétéeAffiche() dans le code Serveur de modification de mon interrupteur.
La zone est rafraichie et je n'ai plus l'erreur. Cependant mon but est d'éviter ce rafraichissement de Zone.
Je pense qu'en fait si je ne fais pas ça la zone est inconnue après la modification (puisque page AWP) du coup cela produit l'erreur.

Edit 2 : je suis en train d'essayer de passer en code navigateur et d'exécuter de l'Ajax serveur... Ce n'est pas tout à fait concluant pour l'instant. Si quelqu'un a une astuce en attendant... :p

Edit 3 : j'avance doucement. Ma modification se fait bien et je n'ai plus d'erreur, mais après exécution du RepriseSaisie() dans "onClick", la case se coche à nouveau.

--
Vincent
Message modifié, 22 avril 2016 - 10:13
Membre enregistré
240 messages
Popularité : +3 (3 votes)
Posté le 22 avril 2016 - 11:52
J'ai réglé le problème de l'erreur avec le code serveur uniquement , en utilisant une ZoneRépétée qui se charge par programmation.

Code d'init. de ma ZR Ajax.

ZoneRépétéeSupprimeTout(MoiMême)

iOccur est un entier
iPgPrm est un entier = Val(PageParamètre("userid"))
SI iPgPrm > 0 ALORS
REQ_S_Droits_Administrateurs._pID = iPgPrm
HExécuteRequête(REQ_S_Droits_Administrateurs)
POUR TOUT REQ_S_Droits_Administrateurs
ZoneRépétéeAjoute(MoiMême)
iOccur = ZoneRépétéeOccurrence(MoiMême)
MoiMême[iOccur].ATT_ModuleCode =REQ_S_Droits_Administrateurs.ModuleCode
MoiMême[iOccur].ATT_IDWA = REQ_S_Droits_Administrateurs.IDWebAdmins
MoiMême[iOccur].ATT_AddRight = REQ_S_Droits_Administrateurs.AddRight
MoiMême[iOccur].ATT_DeleteRight = REQ_S_Droits_Administrateurs.DeleteRight
MoiMême[iOccur].ATT_UpdateRight = REQ_S_Droits_Administrateurs.UpdateRight
MoiMême[iOccur].ATT_ViewRight = REQ_S_Droits_Administrateurs.ViewRight
FIN

SINON
MaSource._pID = ""
FIN


Code serveur de l'interrupteur présent dans ma ZR.

SI PAS lproc_updateField(ZR_REQ_S_Droits_Administrateurs[ZR_REQ_S_Droits_Administrateurs].LIBF_IDWA, ZR_REQ_S_Droits_Administrateurs[ZR_REQ_S_Droits_Administrateurs].LIBF_ModuleCode, ZR_REQ_S_Droits_Administrateurs[ZR_REQ_S_Droits_Administrateurs].INT_ViewRight) ALORS
LIB_Error..Valeur = "Erreur : impossible de modifier cet enregistrement"
FIN


Mais le code Ajax qui s'exécute avec onClick() me pose toujours problème - La case se remet dans son état initial après exécution.

SI AJAXDisponible() ALORS

SI AJAXExecute(ajaxActualiseChamps,lproc_updateField, ZR_REQ_S_Droits_Administrateurs.ATT_IDWA,ZR_REQ_S_Droits_Administrateurs.ATT_ModuleCode, ZR_REQ_S_Droits_Administrateurs.ATT_ViewRight) = "0" ALORS
LIB_Error = "Impossible de modifier cet enregistrement"
FIN

RepriseSaisie(ATT_ViewRight)

FIN


Dans "onChange" ce code n'est jamais exécuté.

Une suggestion à faire ?

--
Vincent
Message modifié, 22 avril 2016 - 11:52
Membre enregistré
240 messages
Popularité : +3 (3 votes)
Posté le 22 avril 2016 - 12:08
Bon ben... J'ai résolu tous mes problèmes... Comme quoi en cherchant :-)

Dans onClick, remplacé par :

// Si Ajax est disponible...
SI AJAXDisponible() ALORS

// Exécuter la fonction de modification à "distance".
SI AJAXExecute(ajaxActualiseChamps,lproc_updateField, ZR_REQ_S_Droits_Administrateurs.ATT_IDWA,ZR_REQ_S_Droits_Administrateurs.ATT_ModuleCode, ZR_REQ_S_Droits_Administrateurs.ATT_ViewRight) = "0" ALORS

// Afficher l'erreur si problème exécution.
LIB_Error = "Impossible de modifier cet enregistrement"

SINON

// Réinitialiser le contenu du champ.
LIB_Error = ""

FIN

RETOUR

FIN


La case à cochée n'est pas modifiée et mon code serveur n'est pas appelé si Ajax est actif.
Si AJAX désactivé mon code serveur sera tout de même appelé et rafraichira ma page.
Ma ZR est "par programmation", je n'ai plus d'erreur de positionnement...

J'espère avoir bien fait, si quelqu'un peut me valider cela quand même :-)

--
Vincent
Message modifié, 22 avril 2016 - 12:18
Posté le 09 juin 2023 - 15:46
Vincent Lecomte a écrit :
Bon ben... J'ai résolu tous mes problèmes... Comme quoi en cherchant :-)

Dans onClick, remplacé par :

// Si Ajax est disponible...
SI AJAXDisponible() ALORS

// Exécuter la fonction de modification à "distance".
SI AJAXExecute(ajaxActualiseChamps,lproc_updateField, ZR_REQ_S_Droits_Administrateurs.ATT_IDWA,ZR_REQ_S_Droits_Administrateurs.ATT_ModuleCode, ZR_REQ_S_Droits_Administrateurs.ATT_ViewRight) = "0" ALORS

// Afficher l'erreur si problème exécution.
LIB_Error = "Impossible de modifier cet enregistrement"

SINON

// Réinitialiser le contenu du champ.
LIB_Error = ""

FIN

RETOUR

FIN


La case à cochée n'est pas modifiée et mon code serveur n'est pas appelé si Ajax est actif.
Si AJAX désactivé mon code serveur sera tout de même appelé et rafraichira ma page.
Ma ZR est "par programmation", je n'ai plus d'erreur de positionnement...

J'espère avoir bien fait, si quelqu'un peut me valider cela quand même :-)

--
Vincent


Hello Vincent,
Je déterre ton poste, est-ce que ta solution est encore viable ?
J'ai un problème avec une ZoneRépétée en WebDev Serveur + Ajax, un interrupteur présent dedans, lors d'un clic dans le INT, il se remet à l'état initiale et refresh toutes ma page, une solutoin ?

Benjamin