J’utilise un script et de l’autocomplétion d’un champ pour remplir les autres champs depuis ce dernier (par simple traitement de chaîne de caractères).
J’ai donc un fieldCompletion dans mon objet métier et un script front pour remplir les champs à partir du premier saisi dans le formulaire.
Cependant, le script ne semble pas être appliqué dans le cas ou on modifie la liste et ajoute une ligne.
La complétion des autres champs se fait par un etabNom.ui.on("change", function() {/* set des valeurs */});
etabNom étant récupéré comme ceci: var etabNom = ui.getUIField(ctn, obj, "eqlCat2DroitEtabNom");
Est-ce qu’il faut récupérer ce champ d’une autre façon dans le cas d’un ajout de ligne par modification de la liste ?
Dans le cas d’une ligne de tableau, il faut préciser à quel ID le champ correspond puisqu’il y a N inputs pour un même champ dans le tableau. Celui-ci est passé en paramètre des hooks lorsqu’il s’agit d’un record :
Exemple dans la documentation
p.list.onloadrow = function(ctn, obj, id) {
var field = ui.getUIField(ctn, obj, "myField", id);
field && field.ui.on("change", function() {
var v = field.ui.val(),
f = ui.getUIField(ctn, obj, "myOtherField", id);
f.ui.visible(v ? Simplicite.VIS_HIDDEN: Simplicite.VIS_BOTH);
f.ui.updatable(f.required && v=="123");
});
};
Votre solution marche pour les éléments déjà présents, mais il reste à trouver le moyen de prendre en charge les records rajoutés lors de l’édition de liste.
Le bouton “ajouter une ligne” unique ajoute 1 ligne avec un row_id = “0” en début de liste, le code est normalement le même car les fields sont bien associés à cet id unique de création
Par contre, dans le mode d’édition complète de liste (en insert+update+delete), si on ajoute N lignes en création en bas de liste :
le row_id est indéxé et devient successivement “00” “01” “02”… pour isoler chaque champ en création et ne pas les confondre avec les autres lignes en mise à jour (row_id>0)
le trigger ui.content.load une fois la liste chargée a déjà été appelé sur celle-ci
on va donc ajouter l’appel au hook onloadrow dans ce cas particulier à chaque fois qu’on ajoute une ligne en bas de la liste