Bloquer la modification de certaines lignes d’une grille modifiable

  • Bloquer la modification de certaines lignes d’une grille modifiable

    Posté par Sebastien sur 29 janvier 2024 à 17h23

    Bonjour à tous !

    Je me suis récemment posé une question par rapport aux grilles modifiables dans les applications pilotées par le modèle : Est-il possible de verrouiller certaines lignes des grilles modifiables par rapport à leur donnée au chargement du formulaire ?

    Je sais qu’on est capable de verrouiller une ligne spécifique d’une grille modifiable via l’API lors d’un script JS, mais, à ma connaissance, le lancement des scripts autour des grilles modifiables n’est possible que lors du changement de la donnée. Ce que j’aimerais savoir, c’est s’il est possible de verrouiller certaines lignes de ces grilles au chargement du formulaire.

    Exemple :

    J’ai une table ‘Bon de commande’ avec une grille modifiable qui liste les produits liés au bon de commande (table intermédiaire Bon de commande / Produit comme ‘Ligne du devis’). Certains sont validés, d’autre non (-> champ OptionSet ou Booléen). J’aimerais pouvoir modifier les enregistrements non validés et m’assurer que les lignes qui ont été validées ne soient pas modifiables via cette même grille.

    Pour l’instant, ma solution a été de faire deux grilles côte à côte. Je réponds techniquement à ma problématique, mais ce n’est pas très pratique.
    À votre connaissance est ce que c’est possible ?

    Tanguy Touzard a répondu Il y a 3 mois, 2 semaines 2 Membres · 8 Réponses
  • 8 Réponses
  • Tanguy Touzard

    Membre
    29 janvier 2024 à 17h35

    Il y a bien un évenement JS onRecordSelect sur les grilles éditables qui vous permettra de mettre en lecture seule toutes les colonnes de la ligne sélectionnée

    cf. tuto : How to – Disable / Read Only fields in Editable Grid control (Dynamics 365 / CRM) – Nishant Rana’s Weblog

    • Sebastien

      Membre
      29 janvier 2024 à 17h40

      Je sais, mais si je veux procéder comme ça, ce qu’il me faut c’est l’équivalent d’un évènement OnLoad()

  • Tanguy Touzard

    Membre
    29 janvier 2024 à 17h53

    Y a un bug pour répondre donc je réponds là 🙂

    L’édition d’une ligne n’est possible qu’une fois qu’elle est sélectionnée. C’est donc bien l’événement onRecordSelect qui doit être utilisé pour bloquer l’édition d’une ligne

  • Sebastien

    Membre
    29 janvier 2024 à 18h08

    Je vois bien ce qu’on peut faire avec l’événement OnRecordSelect(), mais ça ne répond pas à ma problématique, d’où ma question originale : Est-il possible de verrouiller certaines lignes des grilles modifiables par rapport à leur donnée au chargement du formulaire ?

    Si quelqu’un à une piste pour arriver à ce résultat, même si on utilise autre chose que les grilles modifiables (PCF, plug-in, iFrame, custom page…), je suis preneur.

    • Cette réponse a été modifiée Il y a 3 mois, 2 semaines par  Sebastien.
    • Cette réponse a été modifiée Il y a 3 mois, 2 semaines par  Sebastien.
    • Cette réponse a été modifiée Il y a 3 mois, 2 semaines par  Sebastien.
  • Tanguy Touzard

    Membre
    29 janvier 2024 à 18h19

    J’ai du mal comprendre… si on parle de mettre en lecture seule un enregistrement qu’on ouvre depuis une grille editable, alors deux remarques/reponses:

    • la notion de grille editable est inutile ici si on parle d’ouvrir l’enregistrement. Ça serait le même concept avec une grille lecture seule.
      – on utilisera alors l’événement OnLoad du formulaire de l’enregistrement pour parcourir tous les contrôles et les mettre en lecture seule. À noter qu’il n’est pas possible de passer les sous grilles en lecture seule via code.

    et je me répète si ma première supposition est fausse et qu’on parle bien de grille editable dans un formulaire qu’on vient d’ouvrir, ça ne sert à rien d’essayer de mettre en lecture seule des lignes “au chargement” du formulaire parent puisque la ligne ne serait pas editable dans tous les cas tant qu’elle n’est pas selectionnée. une fois selectionnée, par contre, on peut agir dessus pour indiquer qu’elle ne peut pas être modifiée directement depuis la grille

  • Sebastien

    Membre
    29 janvier 2024 à 18h41

    Okay je n’arrive pas à charger une image, j’essaye de décrire au mieux :

    Admettons qu’on ai une grille, j’aimerais que, sans avoir à sélectionner quoi que ce soit, au chargement du formulaire, les lignes qui n’ont pas la valeur “ABCD” dans la colonne colonne1 soient modifiables dans la grille, mais que les autres lignes soient verrouillées.
    Mon but étant d’avoir une grille avec certaines lignes modifiables, et certaines non-modifiables, en fonction de la donnée de chaque ligne, au chargement du formulaire.

    • Sebastien

      Membre
      29 janvier 2024 à 18h42

      • Cette réponse a été modifiée Il y a 3 mois, 2 semaines par  Sebastien.
  • Tanguy Touzard

    Membre
    29 janvier 2024 à 18h47

    J’avais donc bien compris… 😅

    ce que par contre vous ne semblez pas comprendre, c’est qu’une grille editable ne permet l’édition d’une ligne que si celle ci est sélectionnée.

    donc votre volonté de gérer cela au chargement du formulaire est inutile. Tant que l’utilisateur ne cherchera pas à sélectionner une ligne, elle sera affichée en lecture seule. Ça n’est qu’au moment de la sélection de la ligne que les contrôles deviennent editables (fonctionnellement ET visuellement)

Connectez-vous pour répondre.