2017-09-13 8 views
2

J'ai une entité qui contient 2 formes, je veux empêcher la navagation entre ces 2 formes en fonction de la valeur de deux champ d'option. En d'autres termes, si la valeur de need prescoring est oui, la navigation n'est pas possible et l'inverse, comment puis-je faire cela?masquer les formes onglet dans une tête de formulaire dynamique crm 365

Est-il possible de masquer simplement la liste?

Merci,

enter image description here

+0

Ce n'est pas le cas, car les formulaires dépendent du rôle de sécurité et non des données. Vous devez réviser les exigences. – Alex

+0

aussi ce n'est pas possible de cacher cette liste? @Alex – Marwan

+1

Non, ce n'est pas possible de manière supportée. –

Répondre

2

Non, vous ne pouvez pas modifier dynamiquement les formes que l'utilisateur peut sélectionner. Cela ne peut se faire que de façon statique en fonction des rôles de sécurité. À la place, je suggère d'utiliser un seul formulaire, où vous masquez et affichez les champs/sections/onglets appropriés en fonction de la valeur de votre champ Need Processing.

+0

puis-je rediriger l'utilisateur toujours vers le formulaire de pré-notation s'il clique sur le Diligence? @Henrik H – Marwan

+0

Vous pouvez modifier les formulaires par programme. Je recommanderais contre. Utilisez simplement au format unique où vous affichez/cachez des choses, que je trouve personnellement plus facile à maintenir (et de cette façon, vous pouvez facilement réutiliser les éléments à travers les cas d'utilisation) –

0

Vous pouvez décider en fonction de la complexité de votre projet par rapport au nombre de contrôles de formulaire/onglets/sections. Nous avons fait quelque chose comme ceci pour maintenir & la navigation forcée basée sur la valeur de contrôle de formulaire.

var taskFormOptionSet = { 
     Form1: 1, 
     Form2: 2, 
    }; 

     var FormNames = { 
      Form1: "Form1", 
      Form2: "Form2", 
     }; 

    var myform = Xrm.Page.getAttribute("need_Prescoring").getValue(); 
    var currentform = Xrm.Page.ui.formSelector.getCurrentItem(); 

    if (currentform != null) { 
     var formId = currentform.getId(); 
     var formLabel = currentform.getLabel(); 
    } 

    if (myform == taskFormOptionSet.Form1 && formLabel != FormNames.Form1) { 
     var items = Xrm.Page.ui.formSelector.items.get(); 
     for (var i in items) { 
      var form = items[i]; 
      var formId = form.getId(); 
      var formLabel = form.getLabel(); 

      if (formLabel == FormNames.Form1) { 
       form.navigate(); 
       return; 
      } 
     } 

    } 
-1

Comme il n'est pas supporté je une autre solution qui consiste à vérifier si le booléen est vrai et le nom du, si l'utilisateur essaie de changer la forme, il sera redirigé vers la bonne forme jusqu'à ce qu'il change la valeur du booléen.

DiligenceSwitch: function(){ 
    if (Xrm.Page.ui.formSelector.getCurrentItem() != null) { 
     var currentform = Xrm.Page.ui.formSelector.getCurrentItem();    
    } 

    if (currentform != null) { 
     var formId = currentform.getId(); 
     var formLabel = currentform.getLabel(); 
    } 

    var kycId = Xrm.Page.data.entity.getId();   
    SDK.REST.retrieveRecord(kycId, "kyc_Kycdiligence", "kyc_Needprescoring", null,    //field for searching the targeted field, entity, targeted field, ... 
     function (kyc) { 
      if (kyc != null || kyc.kyc_Needprescoring != null) { 
       if (formLabel != "Pre-Scoring" && kyc.kyc_Needprescoring == true) {  
        var windowOptions = { openInNewWindow: false }; 
        var parameters = {}; 
        parameters["formid"] = "4B0C88A9-720C-4BFA-8F59-7C1D5DD84F02"; 
        Xrm.Utility.openEntityForm("kyc_kycdiligence", kycId, parameters, windowOptions); 
        alert("Vous devez faire le pre-scoring");  
       } 
      } 
     }, 
     function (error) { 
      Xrm.Utility.alertDialog(error.message); 
     }); 
}, 
+0

Avez-vous vu ma réponse? Pourquoi faites-vous un appel de service de plus pour récupérer la valeur de champ qui est facilement disponible sous forme? –

+0

Parce que je devrais obtenir la valeur onload et parfois c'est null qui génère des erreurs, et ce champ devrait être caché sous la forme @ArunVinoth – Marwan