Personnaliser les vues d’entité

 

Date de publication : janvier 2017

S’applique à : Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Les vues d’entités sont des requêtes enregistrées spéciales qui récupèrent des données à l’aide d’un filtre spécifique. Elles contiennent également des informations sur la façon dont les données de la vue doivent être affichées dans l’application. Les vues d’entités sont des enregistrements SavedQuery que vous pouvez créer par programme. Vous pouvez également les définir en tant que fichiers XML et les importer dans Microsoft Dynamics 365 avec une solution non gérée.

Une vue d’entité est différente de UserQuery. Une requête utilisateur, appelée Vue enregistrée dans l’application, appartient à un utilisateur particulier, peut être affectée et partagée avec d’autres utilisateurs, peut être affichée par d’autres utilisateurs selon les privilèges d’accès de la requête. Elle convient aux requêtes fréquemment utilisées qui présentent les types d’entités et les requêtes effectuant l’agrégation.Pour plus d'informations :Entité UserQuery (vue enregistrée)

Vous pouvez également utiliser l'outil de personnalisation de Dynamics 365 pour personnaliser les vues.Pour plus d'informations :TechNet : Création et modification des vues

Contenu de la rubrique

Types de vues

Affichage de tâches

  • Créer des vues

  • Mettre à jour les vues

  • Supprimer des vues

  • Extraire des vues

  • Désactiver des vues

  • Modifier les critères de filtre ou configurer le tri

  • Modifier les colonnes

  • Ajouter des images personnalisées avec l'info-bulle pour une colonne

  • Définir par défaut

Types de vues

Le tableau suivant répertorie les types de vues prises en charge pour la personnalisation. Le code de type d’une vue est enregistré dans l’attribut SavedQuery.QueryType. Notez qu’il existe des valeurs valides pour l’attribut QueryType non répertoriées ici car cette entité est également utilisée pour stocker les filtres et les modèles Microsoft Office Outlook. Pour plus d'informations, voir Filtres et modèles hors connexion et Outlook.

Lorsque des vues sont définies pour une entité spécifique, l’attribut SavedQuery.ReturnedTypeCode renvoie le nom logique de l’entité.

Type de vue

Code de type

Description

Public

0

  • Occurrence: Tous

  • Actions: Créer, supprimer, mettre à jour

  • Commentaires: Vous pouvez définir une de ces vues comme vue publique par défaut en attribuant à SavedQuery.IsDefault la valeur true.

Recherche avancée

1

  • Occurrence: 1

  • Actions: Mise à jour uniquement.

  • Commentaires: Par défaut, cette vue est affichée lorsque les résultats sont affichés dans Recherche avancée.

Vue associée

2

  • Occurrence: 1

  • Actions: Mise à jour uniquement,

  • Commentaires: Par défaut, cette vue est affichée lorsqu’une grille de l’enregistrement associé s’affiche dans le volet de navigation d’un enregistrement.

Recherche rapide

4

  • Occurrence: 1

  • Actions: Mise à jour uniquement.

  • Commentaires: Cette vue définit les colonnes qui font l’objet d’une recherche d’enregistrements en utilisant le champ de recherche dans la liste.

Recherche

64

  • Occurrence: 1

  • Actions: Mise à jour uniquement.

  • Commentaires: Il s’agit de la vue par défaut qui permet de rechercher un enregistrement lorsqu’aucune autre vue n’a été configurée pour le champ de recherche.

Affichage de tâches

Comme les vues sont des enregistrements SavedQuery, vous pouvez créer, mettre à jour, extraire, supprimer et désactiver ces enregistrements. En outre, vous pouvez modifier les critères de filtre ou configurer le tri, modifier les colonnes ou définir une vue en tant que vue par défaut.

Créer des vues

Pour créer une vue publique, spécifiez les propriétés suivantes :

  • SavedQuery.Name: Identificateur unique pour la requête enregistrée.

  • SavedQuery.ReturnedTypeCode: Correspond au nom logique de l’entité.

  • SavedQuery.FetchXml: Voir Utiliser FetchXML pour créer une requête.

  • SavedQuery.LayoutXml: Voir <layoutxml> (SavedQuery) pour les éléments valides.

  • SavedQuery.QueryType: Doit toujours correspondre à zéro (0).

L’exemple suivant crée une nouvelle vue publique pour l’entité opportunité :


                    System.String layoutXml =
@"<grid name='resultset' object='3' jump='name' select='1' 
    preview='1' icon='1'>
    <row name='result' id='opportunityid'>
    <cell name='name' width='150' /> 
    <cell name='customerid' width='150' /> 
    <cell name='estimatedclosedate' width='150' /> 
    <cell name='estimatedvalue' width='150' /> 
    <cell name='closeprobability' width='150' /> 
    <cell name='opportunityratingcode' width='150' /> 
    <cell name='opportunitycustomeridcontactcontactid.emailaddress1' 
        width='150' disableSorting='1' /> 
    </row>
</grid>";

                    System.String fetchXml =
                    @"<fetch version='1.0' output-format='xml-platform' 
    mapping='logical' distinct='false'>
    <entity name='opportunity'>
    <order attribute='estimatedvalue' descending='false' /> 
    <filter type='and'>
        <condition attribute='statecode' operator='eq' 
        value='0' /> 
    </filter>
    <attribute name='name' /> 
    <attribute name='estimatedvalue' /> 
    <attribute name='estimatedclosedate' /> 
    <attribute name='customerid' /> 
    <attribute name='opportunityratingcode' /> 
    <attribute name='closeprobability' /> 
    <link-entity alias='opportunitycustomeridcontactcontactid' 
        name='contact' from='contactid' to='customerid' 
        link-type='outer' visible='false'>
        <attribute name='emailaddress1' /> 
    </link-entity>
    <attribute name='opportunityid' /> 
    </entity>
</fetch>";

                    SavedQuery sq = new SavedQuery
                    {
                        Name = "A New Custom Public View",
                        Description = "A Saved Query created in code",
                        ReturnedTypeCode = "opportunity",
                        FetchXml = fetchXml,
                        LayoutXml = layoutXml,
                        QueryType = 0
                    };

                    _customViewId = _serviceProxy.Create(sq);
                    Console.WriteLine("A new view with the name {0} was created.", sq.Name);

Mettre à jour les vues

Si la propriété gérée SavedQuery.IsCustomizable permet de mettre à jour la vue, vous pouvez utiliser la méthode IOrganizationService.Update ou le message UpdateRequest pour actualiser la vue.

Supprimer des vues

Vous ne devez supprimer que les requêtes enregistrées que vous avez créées. Un composant de solution ou partie de l’application peut dépendre d’une requête enregistrée spécifiques. Si vous ne souhaitez pas voir apparaître certaines requêtes dans l’application, désactivez-les.

Extraire des vues

Utilisez RetrieveMultipleRequest ou IOrganizationService.RetrieveMultiple pour extraire des enregistrements de requête enregistrés.

L’exemple suivant extrait toutes les vues publiques pour l’entité opportunité :


        QueryExpression mySavedQuery = new QueryExpression
        {
            ColumnSet = new ColumnSet("savedqueryid", "name", "querytype", "isdefault", "returnedtypecode", "isquickfindquery"),
            EntityName = SavedQuery.EntityLogicalName,
            Criteria = new FilterExpression
            {
                Conditions =
{
    new ConditionExpression
    {
        AttributeName = "querytype",
        Operator = ConditionOperator.Equal,
        Values = {0}
    },
    new ConditionExpression
    {
        AttributeName = "returnedtypecode",
        Operator = ConditionOperator.Equal,
        Values = {Opportunity.EntityTypeCode}
    }
}
            }
        };
        RetrieveMultipleRequest retrieveSavedQueriesRequest = new RetrieveMultipleRequest { Query = mySavedQuery };

        RetrieveMultipleResponse retrieveSavedQueriesResponse = (RetrieveMultipleResponse)_serviceProxy.Execute(retrieveSavedQueriesRequest);

        DataCollection<Entity> savedQueries = retrieveSavedQueriesResponse.EntityCollection.Entities;

        //Display the Retrieved views
        foreach (Entity ent in savedQueries)
        {
            SavedQuery rsq = (SavedQuery)ent;
            Console.WriteLine("{0} : {1} : {2} : {3} : {4} : {5},", rsq.SavedQueryId, rsq.Name, rsq.QueryType, rsq.IsDefault, rsq.ReturnedTypeCode, rsq.IsQuickFindQuery);
        }

Désactiver des vues

Si vous ne souhaitez pas voir apparaître une vue publique dans l’application, vous pouvez la désactiver. Vous ne pouvez pas désactiver une vue publique qui est définie comme vue par défaut. L’exemple suivant désactive la vue Opportunités fermées au cours de l’exercice actuel pour l’entité opportunité :


System.String SavedQueryName = "Closed Opportunities in Current Fiscal Year";
QueryExpression ClosedOpportunitiesViewQuery = new QueryExpression
{
    ColumnSet = new ColumnSet("savedqueryid", "statecode", "statuscode"),
    EntityName = SavedQuery.EntityLogicalName,
    Criteria = new FilterExpression
    {
        Conditions =
        {
            new ConditionExpression
            {
                AttributeName = "querytype",
                Operator = ConditionOperator.Equal,
                Values = {0}
            },
            new ConditionExpression
            {
                AttributeName = "returnedtypecode",
                Operator = ConditionOperator.Equal,
                Values = {Opportunity.EntityTypeCode}
            },
                            new ConditionExpression
            {
                AttributeName = "name",
                Operator = ConditionOperator.Equal,
                Values = {SavedQueryName}
            }
        }
    }
};

RetrieveMultipleRequest retrieveOpportuntiesViewRequest = new RetrieveMultipleRequest { Query = ClosedOpportunitiesViewQuery };

RetrieveMultipleResponse retrieveOpportuntiesViewResponse = (RetrieveMultipleResponse)_serviceProxy.Execute(retrieveOpportuntiesViewRequest);

SavedQuery OpportunityView = (SavedQuery)retrieveOpportuntiesViewResponse.EntityCollection.Entities[0];
_viewOriginalState = (SavedQueryState)OpportunityView.StateCode;
_viewOriginalStatus = OpportunityView.StatusCode;


SetStateRequest ssreq = new SetStateRequest
{
    EntityMoniker = new EntityReference(SavedQuery.EntityLogicalName, (Guid)OpportunityView.SavedQueryId),
    State = new OptionSetValue((int)SavedQueryState.Inactive),
    Status = new OptionSetValue(2)
};
_serviceProxy.Execute(ssreq);

Modifier les critères de filtre ou configurer le tri

Pour modifier le filtre ou modifier le mode de tri des données, vous devez définir l’attribut SavedQuery.FetchXml. Pour plus d'informations, voir Générer des requêtes avec FetchXML.

Conseil

Si vous n’êtes pas familiarisé avec FetchXML, les messages suivants peuvent être utilisés pour convertir entre QueryExpression et FetchXML :QueryExpressionToFetchXmlRequest et FetchXmlToQueryExpressionRequest.

Modifier les colonnes

Les colonnes à afficher dans les vues peuvent être prises de l’entité ou des entités associées. Pour plus d’informations sur la manière de spécifier les colonnes à afficher, voir <layoutxml> (SavedQuery).

Ajouter des images personnalisées avec l'info-bulle pour une colonne

Vous pouvez ajouter l'icône personnalisée avec un texte d'info-bulle à afficher dans une colonne selon la valeur de colonne ; vous pouvez également spécifier le texte localisé d'info-bulle. Cette opération s'effectue en ajoutant des images personnalisées comme des ressources Web d'image dans votre instance de Dynamics 365 puis en utilisant une ressource Web JavaScript pour ajouter du code JavaScript pour une colonne pour afficher les icônes en fonction de la valeur de colonne.

Notes

Cette fonctionnalité a été présentée dans Mise à jour de décembre 2016 pour Dynamics 365 (en ligne et local). L'ajout d'images personnalisées avec l'info-bulle est pris en charge uniquement pour les grilles en lecture seule ; cette fonctionnalité n'est pas prise en charge pour les grilles modifiables. Pour plus d'informations sur les grilles modifiables, voir Utiliser des grilles modifiables dans Dynamics 365.

Deux nouveaux attributs, imageproviderwebresource et imageproviderfunctionname, sont ajoutés au layoutxml de savedquery (voir <cell> (SavedQuery) qui vous permet de spécifier le nom d'une ressource Web et un nom de fonction JavaScript pour afficher des icônes personnalisées et du texte d'info-bulle pour une colonne. Le code JavaScript s'exécute lorsque la page se charge.

Vous pouvez également utiliser les nouveaux champs Ressource Web et Nom de fonction dans la page Propriétés de colonne tout en modifiant la propriété d'un attribut (colonne) dans une définition de vue du client Web Dynamics 365 pour définir le nom de la ressource Web et le nom de fonction de JavaScript.

L'exemple de code suivant montre comment spécifier par programme une ressource Web et un nom de fonction JavaScript pour ajouter des icônes personnalisées et une info-bulle pour la colonne opportunityratingcode dans layoutxml:

System.String layoutXml =
@"<grid name='resultset' object='3' jump='name' select='1'
  preview='1' icon='1'>
  <row name='result' id='opportunityid'>
    <cell name='name' width='150' />
    <cell name='customerid' width='150' />
    <cell name='estimatedclosedate' width='150' />
    <cell name='estimatedvalue' width='150' />
    <cell name='closeprobability' width='150' />
    <cell name='opportunityratingcode' width='150' imageproviderwebresource='new_SampleWebResource'
          imageproviderfunctionname='displayIconTooltip' />
    <cell name='opportunitycustomeridcontactcontactid.emailaddress1'
        width='150' disableSorting='1' />
  </row>
</grid>";

La fonction JavaScript permettant d'afficher des images personnalisées et du texte d'info-bulle prévoit les deux arguments suivants : l'objet de ligne entier spécifié dans layoutxml et l'ID de paramètres régionaux (LCID) de l'utilisateur appelant. Le paramètre de LCID vous permet de spécifier le texte de l'icône dans plusieurs langues. Pour plus d'informations sur les langues prises en charge par CRM, voir Activer les langues et Installer ou mettre à niveau les modules linguistiques pour Microsoft Dynamics 365. Pour obtenir la liste des valeurs de l'ID de paramètres régionaux (LCID) que vous pouvez utiliser dans votre code, voir ID de paramètres régionaux assignés par Microsoft.

Si vous ajoutez des icônes personnalisées pour un type d'attribut défini par une option, qui possède un ensemble limité d'options prédéfinies, vérifiez que vous utilisez la valeur d'entier des options plutôt que le libellé afin d'éviter de casser le code avec des modifications dans la chaîne d'étiquette localisée. Par ailleurs, dans votre fonction JavaScript, spécifiez simplement le nom d'une ressource Web d'image que vous souhaitez utiliser comme icône pour une valeur dans l'attribut. L'image doit être d'une taille de 16 x 16 pixels ; les plus grandes images seront automatiquement réduites à la taille de 16 x 16 pixels.

L'exemple de code suivant affiche différente icônes et différents textes d'info-bulles basés sur l'une des valeurs (1: Hot, 2: Warm, 3: Cold) de l'attribut opportunityratingcode (Rating). Cet exemple de code explique également comment afficher le texte d'info-bulle localisé. Pour que cet exemple fonctionne, vous devez créer trois ressources Web d'images chacune avec des images 16 x 16 (Icône d'évaluation Très intéressé, Icône d'évaluation Intéressé et Icône d'évaluation Peu intéressé) dans votre instance de Dynamics 365 avec les noms suivants : new_Hot, new_Warm et new_Cold.

function displayIconTooltip(rowData, userLCID) {    
    var str = JSON.parse(rowData);
    var coldata = str.opportunityratingcode_Value;
    var imgName = "";
    var tooltip = "";
    switch (coldata) {
        case 1:
            imgName = "new_Hot";
            switch (userLCID) {
                case 1036:
                    tooltip = "French: Opportunity is Hot";
                    break;
                default:
                    tooltip = "Opportunity is Hot";
                    break;
            }
            break;
        case 2:
            imgName = "new_Warm";
            switch (userLCID) {
                case 1036:
                    tooltip = "French: Opportunity is Warm";
                    break;
                default:
                    tooltip = "Opportunity is Warm";
                    break;
            }
            break;
        case 3:
            imgName = "new_Cold";
            switch (userLCID) {
                case 1036:
                    tooltip = "French: Opportunity is Cold";
                    break;
                default:
                    tooltip = "Opportunity is Cold";
                    break;
            }
            break;
        default:
            imgName = "";
            tooltip = "";
            break;
    }
    var resultarray = [imgName, tooltip];
    return resultarray;
}

Cela entraîne l'affichage des valeurs dans la colonne Rating contenant les icônes appropriées en fonction de la valeur, et le texte d'info-bulle d'icône lorsque vous pointez la souris sur des icônes.

Icônes personnalisées affichées pour une colonne dans une vue

Définir par défaut

Une seule vue publique active peut être définie en tant que vue par défaut. Pour faire d’une vue la vue par défaut, définissez la propriété IsDefault sur true.

Voir aussi

Exemple : utiliser les vues
Messages et méthodes de l’entité SavedQuery (vue)
Saved query XML reference
Générer des requêtes avec FetchXML
Utiliser le service d'organisation avec des métadonnées Dynamics 365
Personnaliser les formulaires d’entités
Personnaliser les groupes d’options généraux
Personnaliser les applications Microsoft Dynamics 365

Microsoft Dynamics 365

© 2017 Microsoft. Tous droits réservés. Copyright