Anpassen von Entitätsansichten

Entitätsansichten sind spezielle gespeicherte Abfragen, die Daten mithilfe eines spezifischen Filters abrufen. Sie enthalten auch Informationen dazu, wie die Daten in der Ansicht in der Anwendung angezeigt werden sollen. Entitätsansichten sind SavedQuery-Datensätze, die Sie programmgesteuert erstellen können. Sie können diese auch als XML definieren und sie in Dynamics 365 for Customer Engagement mit einer nicht verwalteten Lösung importieren.

Eine Entitätsansicht unterscheidet sich von einer UserQuery. Eine Benutzerabfrage, die in der Anwendung als gespeicherte Ansicht bezeichnet wird, befindet sich im Besitz eines einzelnen Benutzers, kann anderen Benutzern zugewiesen und für andere Benutzer freigegeben werden und kann von anderen Benutzern abhängig von den Zugriffsrechten der Abfrage angezeigt werden. Dies ist für häufig verwendete Abfragen, die sich über mehrere Entitätstypen erstrecken, und Abfragen, die eine Aggregation ausführen, geeignet. Weitere Informationen: UserQuery (Gespeicherte Ansicht) Entität

Sie können auch das Tool für die Anpassung in Dynamics 365 verwenden, um Ansichten anzupassen. Weitere Informationen: Erstellen und Bearbeiten von Ansichten

Typen von Ansichten

In der folgenden Tabelle werden die fünf Ansichtstypen aufgeführt, die für die Anpassung unterstützt werden. Der Typcode einer Ansicht wird im SavedQuery.QueryType-Attribut gespeichert. Beachten Sie, dass es andere gültige Werte für das QueryType-Attribut gibt, die hier nicht aufgeführt sind, da diese Entität auch zum Speichern von Office Outlook-Filtern und -Vorlagen verwendet wird. Weitere Informationen finden Sie unter Offline- und Outlook-Filter und Vorlagen.

Wenn Ansichten für eine bestimmte Entität definiert werden, gibt das SavedQuery.ReturnedTypeCode-Attribut den logischen Namen der Entität zurück.

Ansichtstyp Typcode Beschreibung
Öffentlich 0 - Vorkommen: Many-to-Many
- Aktionen: Create, Update, Delete
- Kommentare: Sie können eine dieser Ansichten als öffentliche Standardansicht festlegen, indem Sie SavedQuery.IsDefault auf wahr festlegen.
Erweiterte Suche 1 - Vorkommen: 1
- Aktionen: Nur aktualisieren.
- Kommentare: Diese Ansicht wird standardmäßig angezeigt, wenn die Ergebnisse in Erweiterte Suche angezeigt werden.
Zugeordnet 2 - Vorkommen: 1
- Aktionen: Nur aktualisieren,
- Kommentare: Diese Ansicht wird standardmäßig angezeigt, wenn ein Raster von Bezugsdatensätzen im Navigationsbereich eines Datensatzes erscheint.
Schnellsuche 4 - Vorkommen: 1
- Aktionen: Nur aktualisieren.
- Kommentare: Diese Ansicht definiert die Spalten, die durchsucht werden, wenn ein Benutzer in einer Listenansicht über das Suchfeld nach Datensätzen sucht.
Suche 64 - Vorkommen: 1
- Aktionen: Nur aktualisieren.
- Kommentare: Dies ist die Standardansicht, die zum Nachschlagen eines Datensatzes verwendet wird, wenn keine andere Ansicht für das Nachschlagefeld konfiguriert wurde.

Ansichtsaufgaben

Da Ansichten SavedQuery-Datensätze sind, können Sie sie erstellen, aktualisieren, abrufen, löschen und deaktivieren. Darüber hinaus können Sie Filterkriterien bearbeiten oder die Sortierreihenfolge konfigurieren, Spalten bearbeiten oder eine Ansicht als Standardansicht festlegen.

Erstellen von Ansichten

Wenn Sie eine öffentliche Ansicht erstellen, geben Sie die folgenden Eigenschaften an:

  • SavedQuery.Name: Ein eindeutiger Bezeichner für die gespeicherte Abfrage.

  • SavedQuery.ReturnedTypeCode: Entspricht dem logischen Namen der Entität.

  • SavedQuery.FetchXml: Siehe Benutzen Sie FetchXML, um eine Abfrage zu konstruieren.

  • SavedQuery.LayoutXml: Siehe das Element layoutxml im Schema der Anpassungslösungen für die gültigen Elemente.

  • SavedQuery.QueryType: Muss immer Null (0) sein.

    Das folgende Bespiel erstellt eine neue öffentliche Ansicht für die Verkaufschancenentität:

    
    
                        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);
    
    

Aktualisieren von Ansichten

Wenn die verwaltete Eigenschaft SavedQuery.IsCustomizable eine Aktualisierung der Ansicht zulässt, können Sie die Methode IOrganizationService. Update oder die Nachricht UpdateRequest zur Aktualisierung der Ansicht verwenden.

Löschen von Ansichten

Sie sollten nur gespeicherte Abfragen löschen, die Sie erstellt haben. Eine Lösungskomponente oder ein Teil der Anwendung ist möglicherweise von einer spezifischen gespeicherten Abfrage abhängig. Wenn Abfragen vorhanden sind, die nicht in der Anwendung angezeigt werden sollen, sollten Sie sie deaktivieren.

Abrufen von Ansichten

Verwenden Sie eine RetrieveMultipleRequest oder IOrganizationService. RetrieveMultiple, um gespeicherte Abfrage-Datensätze abzurufen.

Das folgende Bespiel ruft alle öffentlichen Ansichten für die Verkaufschancenentität ab:



        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);
        }

Deaktivieren von Ansichten

Wenn eine öffentliche Ansicht nicht in der Anwendung angezeigt werden soll, können Sie sie deaktivieren. Sie können eine öffentliche Ansicht nicht deaktivieren, die als Standardansicht festgelegt ist. Das folgende Beispiel deaktiviert die Ansicht Abgeschlossene Verkaufschancen im aktuellen Geschäftsjahr für die Verkaufschancenentität:



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);

Notiz

Der Ansichtsstatus, aktiv oder inaktiv, wird beim Hinzufügen zu einer Lösung nicht in die Ansicht aufgenommen. Wenn die Lösung in eine Zielorganisation importiert wird, wird der Status daher standardmäßig auf aktiv gesetzt.

Bearbeiten von Filterkriterien oder Konfigurieren der Sortierung

Wenn Sie den Filter bearbeiten oder die Sortierung der Daten bearbeiten möchten, müssen Sie das Attribut SavedQuery.FetchXml festlegen. Weitere Informationen finden Sie unter Abfragen erstellen mit FetchXML.

Trinkgeld

Wenn Sie mit FetchXML nicht vertraut sind, können die folgenden Meldungen verwendet werden, um QueryExpression in FetchXML zu konvertieren und umgekehrt: QueryExpressionToFetchXmlRequest und FetchXmlToQueryExpressionRequest.

Bearbeiten von Spalten

Die Spalten, die in den Ansichten angezeigt werden sollen, können von der Entität oder von verknüpften Entitäten übernommen werden. Weitere Informationen, wie Spalten angegeben werden, die angezeigt werden sollen, finden Sie unter dem layoutxml-Element im Anpassungslösungsdateischema.

Fügen Sie benutzerdefiniert Symbole QuickInfo für eine Spalte hinzu

Sie können benutzerdefinierte Symbole mit QuickInfotext in einer Spalte abhängig vom Spaltenwert hinzufügen; Sie können auch den lokalisiertem QuickInfotext angeben. Dazu fügen Sie die angepassten Symbole als Bild-Webressourcen in Ihrer Dynamics 365-Instanz hinzu und verwenden dann eine JavaScript-Webressource, um JavaScript-Code für eine Spalte hinzuzufügen, um die Symbole in Abhängigkeit vom Spaltenwert anzuzeigen.

Notiz

Diese Funktion wurde mit dem Dezember 2016 Update für Dynamics 365 (online und lokal) eingeführt. Das Hinzufügen benutzerdefinierter Symbole mit QuickInfos wird nur für die schreibgeschützten Raster unterstützt; diese Funktion wird für bearbeitbare Raster nicht unterstützt. Weitere Informationen zum Abfrage-Assistenten bearbeitbare Raster, siehe Bearbeitbare Raster verwenden.

Zwei neue Attribute, imageproviderwebresource und imageproviderfunctionname, wurden dem Element cell der layoutxml von savedquery hinzugefügt, mit denen Sie den Namen einer Webressource und einen JavaScript-Funktionsnamen angeben können, um angepasste Symbole und Tooltip-Text für eine Spalte anzuzeigen. Der JavaScript-Code wird ausgeführt, wenn die Seite geladen wird.

Sie können auch die neuen Felder Webressource und Funktionsname auf der Seite Spalteneigenschaften verwenden, während Sie die Eigenschaft eines Attributs (Spalte) in einer Ansichtsdefinition im Dynamics 365 Web Client ändern, um den Namen der Webressource und den Namen der JavaScript-Funktion anzugeben.

Der folgende Beispielcode zeigt, wie Sie eine Webressource und einen JavaScript-Funktionsnamen zum Hinzufügen benutzerdefinierter und Symbole und QuickInfo für die opportunityratingcode-Spalte in layoutxml programmgesteuert angeben können:

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>";  

Die JavaScript-Funktion zum Anzeigen benutzerdefinierter Symbole und QuickInfo-Text erwartet die folgenden beiden Argumente: das gesamte Zeilenobjekt angegeben in layoutxml und des aufrufender Benutzers Gebietsschema-ID (LCID). Der LCID-Parameter ermöglicht Ihnen, QuickInfotext für das Symbol in mehreren Sprachen zu definieren. Weitere Informationen zu den von CRM unterstützten Sprachen finden Sie in Aktivieren von zusätzlichen Sprachen und Installieren und Aktualisieren von Language Packs für Microsoft Dynamics 365 Customer Engagement. Eine Liste mit Werten von lokalen Gebietsschema-ID (LCID)-Werten, die Sie in Ihrem Code verwenden können, finden Sie unter Von Microsoft zugewiesene lokale IDs.

Sie werden wahrscheinlich benutzerdefinierte Symbole für einen Optionssatztyp von Attributen hinzufügen, da die vordefinierten Optionen begrenzt sind. Stellen Sie sicher, dass Sie den ganzzahligen Wert der Optionen anstelle der Beschriftung verwenden, um zu verhindern, dass der Code aufgrund der Änderung in der lokalisierten Beschriftungszeichenfolge unterbrochen wird. In der JavaScript-Funktion geben Sie einfach den Namen einer Bildwebressource an, die Sie als Symbol für einen Wert im Attribut verwenden möchten. Das Bild sollte von der Größe der Pixel 16x16 betragen; größere Bilder werden automatisch auf die Größe von 16x16 Pixel heruntergeschraubt.

Der folgende Beispielcode zeigt Symbole und Tooltiptexte auf Basis von drei Werten an (1: Hot, 2: Warm, 3: Cold) im Attribut opportunityratingcode (Rating) (Bewertung) an. Der Beispielcode zeigt auch, wie ein lokalisiertes Tooltip angezeigt wird. Damit dieses Beispiel funktioniert, müssen Sie drei Bild-Webressourcen mit jeweils 16-x-16-Bildern (Bewertungsschaltfläche Heiß, Bewertungssymbol Warm und Bewertungsschaltfläche Kalt) in Ihrer Dynamics 365-Instanz erstellen und sie wie folgt benennen: new_Hot, new_Warm und 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;  
}  

Dies kann dazu führen, dass die Werte in der Rating Spalte mit entsprechenden Symbolen dargestellt werden, abhängig vom Wert und von Symbol Quickinfotext, wenn Sie über die Symbole fahren.

Benutzerdefinierte Symbole werden für eine Spalte in einer Ansicht angezeigt.

Als Standard festlegen

Nur eine aktive öffentliche Ansicht kann als Standardansicht festgelegt werden. Um eine Ansicht als Standardansicht festzulegen, legen Sie die Eigenschaft IsDefault auf "true" fest.

Siehe auch

Beispiel: Arbeiten mit Ansichten
Abfragen erstellen mit FetchXML
Erweitern des Metadatenmodells für Microsoft Dynamics 365 Customer Engagement
Anpassen von Entitätsformularen in Microsoft Dynamics 365 Customer Engagement
Anpassen globaler Optionssätze in Microsoft Dynamics 365 Customer Engagement
Anpassen von Dynamics 365 Customer Engagement