Anpassen von Ansichten in modellgesteuerten Apps

Passen Sie Ansichten in modellgesteuerten Apps programmgesteuert an, um zu steuern, welche Daten benutzer abrufen und wie die Anwendung sie anzeigt. Ansichten sind SavedQuery Datensätze, die bestimmte Filter und Anzeigeeinstellungen verwenden. Sie können sie im Code erstellen oder als XML definieren und mit einer nicht verwalteten Lösung importieren.

Eine SavedQuery Ansicht unterscheidet sich von einer UserQuery. Eine Benutzerabfrage, die als gespeicherte Ansicht in modellgesteuerten Apps bezeichnet wird, gehört einem einzelnen Benutzer, kann anderen Benutzern zugewiesen und für andere Benutzer freigegeben werden und kann von anderen Benutzern abhängig von den Zugriffsberechtigungen der Abfrage angezeigt werden. Dieser Ansichtstyp eignet sich für häufig verwendete Abfragen, die Tabellentypen und Abfragen umfassen, die Aggregation ausführen. Weitere Informationen finden Sie unter Gespeicherte Abfragen.

Sie können auch das Anpassungstool verwenden, um die Ansichten anzupassen. Weitere Informationen finden Sie unter Erstellen und Bearbeiten von Ansichten.

Typen von Ansichten

In der folgenden Tabelle sind die fünf Arten von Ansichten aufgeführt, die Sie anpassen können. Der Typcode einer Ansicht wird im SavedQuery.QueryType-Parameter gespeichert.

Wenn Sie Ansichten für eine bestimmte Tabelle definieren, gibt der SavedQuery.ReturnedTypeCode Parameter den logischen Tabellennamen zurück.

Ansichtstyp Typcode Beschreibung
Öffentlich 0 - Vorkommen: Viele
- Aktionen: Erstellen, Aktualisieren, Löschen
- Kommentare: Legen Sie eine dieser Ansichten als öffentliche Standardansicht fest, indem Sie auf "true" festlegen SavedQuery.IsDefault .
Erweiterte Suche 1 - Vorkommen: 1
- Aktionen: Nur Aktualisieren.
- Kommentare: Diese Ansicht wird standardmäßig angezeigt, wenn Ergebnisse in Erweiterte Suche angezeigt werden.
Zugeordnet 2 - Vorkommen: 1
- Aktionen: Nur Aktualisieren.
- Kommentare: Diese Ansicht wird standardmäßig angezeigt, wenn ein Raster mit verknüpften Datensätzen im Navigationsbereich eines Datensatzes angezeigt wird.
Schnellsuche 4 - Vorkommen: 1
- Aktionen: Nur Aktualisieren.
- Kommentare: Diese Ansicht definiert die Spalten, die durchsucht werden, wenn ein Benutzer mithilfe der Suchspalte in einer Listenansicht 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 die Nachschlagespalte konfiguriert ist.

Verwalten von Ansichten als Lösungskomponenten

Ansichten sind Lösungskomponenten. Wenn Sie Lösungskomponenten erstellen, aktualisieren oder löschen, wenden Sie die Änderung auf die Lösung an, die sie enthält. Wenn Sie keine Lösung explizit angeben, werden die Änderungen auf die bevorzugte Lösung festgelegt, für die der Code ausgeführt wird. Wenn diese Person keine bevorzugte Lösung hat, wechseln die Änderungen zu einer der Standardlösungen.

Verwenden Sie als Entwickler den SolutionUniqueName optionalen Parameter , um diese Datenänderungen explizit einer bestimmten nicht verwalteten Lösung zuzuordnen.

Erstellen von Ansichten

Um eine öffentliche Ansicht zu erstellen, geben Sie die folgenden SavedQuery-Eigenschaften an:

Property Beschreibung
Name Ein eindeutiger Bezeichner für die gespeicherte Abfrage.
ReturnedTypeCode Entspricht dem logischen Namen der Tabelle.
FetchXml Bearbeiten Sie Filterkriterien, oder konfigurieren Sie die Sortierung. Siehe Abfragedaten mithilfe von FetchXml.
LayoutXml Sehen Sie sich das layoutxml Element im Dateischema der Anpassungslösungen für die gültigen Elemente an.
QueryType Muss immer Null (0) sein.

Im folgenden Beispiel wird eine neue öffentliche Ansicht für die Verkaufschancentabelle erstellt:

In diesem Beispiel wird die IOrganizationService.Execute-Methode mit der CreateRequest-Klasse und dem SolutionUniqueName optionalen Parameter verwendet.

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

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

var request = new CreateRequest
{
   Target = sq
};
request["SolutionUniqueName"] = "< Your Solution Unique Name >";

var response = (CreateResponse)service.Execute(request);
_customViewId = response.id;
Console.WriteLine("A new view with the name {0} was created.", sq.Name);

Weitere Informationen zum Dataverse SDK für .NET

Aktualisieren von Ansichten

Wenn die IsCustomizable verwaltete Eigenschaft die Aktualisierung der Ansicht zulässt, verwenden Sie die UpdateRequest-Klassenmeldung , um die Ansicht zu aktualisieren. Aktualisieren Sie immer Ansichten im Kontext einer Lösung. Verwenden Sie den SolutionUniqueName optionalen Parameter , um die Änderung einer Ansicht einer Lösung zuzuordnen.

Ein Updatebeispiel finden Sie unter "Deaktivieren von Ansichten"

Löschen von Ansichten

Sie sollten nur gespeicherte Abfragen löschen, die Sie erstellt haben. Eine Lösungskomponente oder ein Teil der Anwendung hängt möglicherweise von einer bestimmten gespeicherten Abfrage ab. Wenn abfragen vorhanden sind, die in der Anwendung nicht angezeigt werden sollen, deaktivieren Sie sie. Löschen Sie Immer Ansichten im Kontext einer Lösung. Verwenden Sie den SolutionUniqueName optionalen Parameter , um das Löschen einer Ansicht einer Lösung zuzuordnen.

Abrufen von Ansichten

In den folgenden Beispielen werden alle öffentlichen Ansichten für die Verkaufschancentabelle abgerufen:

In diesem Beispiel wird eine RetrieveMultipleRequest-Klasse mit der IOrganizationService.Execute-Methode verwendet, um gespeicherte Abfragedatensätze abzurufen.

var 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)service.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);
}

Weitere Informationen zum Dataverse SDK für .NET

Deaktivieren von Ansichten

Wenn in der Anwendung keine öffentliche Ansicht angezeigt werden soll, deaktivieren Sie sie. Sie können keine öffentliche Ansicht deaktivieren, die als Standardansicht festgelegt ist.

Die Deaktivierung ist ein Aktualisierungsvorgang. Aktualisieren Sie immer Ansichten im Kontext einer Lösung. Verwenden Sie den SolutionUniqueName optionalen Parameter , um die Änderung einer Ansicht einer Lösung zuzuordnen.

Im folgenden Beispiel wird die Ansicht "Geschlossene Verkaufschancen" in der Ansicht "Aktuelles Geschäftsjahr " für die Verkaufschancentabelle deaktiviert:

In diesem Beispiel wird die IOrganizationService.Execute-Methode mit der UpdateRequest-Klasse und dem SolutionUniqueName optionalen Parameter verwendet.

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)service.Execute(retrieveOpportuntiesViewRequest);

SavedQuery OpportunityView =
   (SavedQuery)retrieveOpportuntiesViewResponse.EntityCollection.Entities[0];

var updateRequest = new UpdateRequest
{
  Target = new SavedQuery
  {
    Id = OpportunityView.Id,
    StateCode = new OptionSetValue(1), // Inactive
    StatusCode = new OptionSetValue(2) // Inactive
  }
};
updateRequest["SolutionUniqueName"] = "< Your Solution Unique Name >";

service.Execute(updateRequest);

Weitere Informationen zum Dataverse SDK für .NET

Anmerkung

Der Ansichtszustand: active oder inactive ist nicht in der Ansicht enthalten, wenn Sie sie zu einer Lösung hinzufügen. Wenn Sie die Lösung daher in eine Zielorganisation importieren, ist der Status standardmäßig auf "Aktiv" festgelegt.

Bearbeiten von Spalten

Sie können Spalten auswählen, die in Ansichten aus der Tabelle oder verknüpften Tabellen angezeigt werden sollen. Weitere Informationen, wie Spalten angegeben werden, die angezeigt werden sollen, finden Sie unter dem layoutxml-Element im Anpassungslösungsdateischema.

Hinzufügen von benutzerdefinierten Symbolen und QuickInfos zum Anzeigen von Spalten

Sie können je nach Spaltenwert ein benutzerdefiniertes Symbol mit QuickInfo-Text hinzufügen, der in einer Spalte angezeigt werden soll. Sie können auch lokalisierten QuickInfo-Text angeben. Fügen Sie die benutzerdefinierten Symbole als Bildwebressourcen in Ihrer Instanz hinzu, und verwenden Sie dann eine JavaScript-Webressource, um JavaScript-Code für eine Spalte hinzuzufügen, um die Symbole abhängig vom Spaltenwert anzuzeigen.

Anmerkung

Sie können benutzerdefinierte Symbole mit QuickInfos nur zu schreibgeschützten Rastern hinzufügen. Dieses Feature wird für bearbeitbare Raster nicht unterstützt. Weitere Informationen zum Abfrage-Assistenten bearbeitbare Raster, siehe Bearbeitbare Raster verwenden.

Dem Element des Layoutxmls von savedquery werden zwei neue Parameter imageproviderwebresourceimageproviderfunctionnamehinzugefügt cell . Mit diesen Parametern können Sie den Namen einer Webressource und einen JavaScript-Funktionsnamen angeben, um benutzerdefinierte Symbole und QuickInfo-Text für eine Spalte anzuzeigen. Der JavaScript-Code wird ausgeführt, wenn die Seite geladen wird.

Sie können die Felder neue Webressource und Funktionsname auf der Seite Spalten-Eigenschaften beim Ändern der Eigenschaft einer Spalte in einer Ansichtsdefinition auch verwenden, um den Webressourcenamen und den JavaScript-Funktionsnamen anzugeben.

Der folgende Beispielcode veranschaulicht, wie Sie programmgesteuert eine Webressource und einen JavaScript-Funktionsnamen angeben können, um benutzerdefinierte Symbole und QuickInfos für die opportunityratingcode Spalte in layoutxml hinzuzufügen:

<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 unterstützten Sprachen finden Sie unter "Regions- und Sprachoptionen für Ihre Umgebung". 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.

Wenn Sie benutzerdefinierte Symbole für einen Auswahltyp von Spalten hinzufügen, da sie über einen begrenzten Satz vordefinierter Optionen verfügt, verwenden Sie den ganzzahligen Wert der Optionen anstelle der Beschriftung, um den Code aufgrund von Änderungen in der lokalisierten Bezeichnungszeichenfolge zu vermeiden. Geben Sie in Ihrer JavaScript-Funktion nur den Namen einer Bildwebressource an, die Sie als Symbol für einen Wert in der Spalte verwenden möchten. Das Bild sollte 16 x 16 Pixel betragen. Größere Bilder werden automatisch auf 16 x 16 Pixel skaliert.

Der folgende Beispielcode zeigt Symbole und Tooltiptexte auf Basis von drei Werten an (1: Hot, 2: Warm, 3: Cold) in der opportunityratingcode (Rating) Spalte. Der Beispielcode zeigt auch, wie ein lokalisiertes Tooltip angezeigt wird. Damit dieses Beispiel funktioniert, müssen Sie jeweils drei Bildwebressourcen mit jeweils 16 x 16 Bildern ( , und ) in Ihrer Instanz mit den folgenden Namen erstellen: new_Hot, , new_Warmund new_Cold.

function displayIconTooltip(rowData, userLCID) {
  var str = JSON.parse(rowData);
  var coldata = str.opportunityratingcode_Value;
  var imgName = "";
  var tooltip = "";
  switch (parseInt(coldata, 10)) {
    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.

Screenshot der benutzerdefinierten Symbole, die in der Spalte

Festlegen einer öffentlichen Ansicht als Standardansicht

Sie können nur eine aktive öffentliche Ansicht als Standardansicht festlegen. Wenn Sie eine Ansicht als Standardansicht festlegen möchten, legen Sie die IsDefault Eigenschaft auf "true" fest.

Community-Werkzeuge

Es gibt mehrere Communitytools, die diese APIs zum Verwalten von Ansichten verwenden:

Anmerkung

Diese Communitytools sind kein Produkt von Dataverse, und Microsoft bietet keine Unterstützung für die Communitytools. Wenn Sie Fragen zu einem Tool haben, wenden Sie sich an den Herausgeber. Weitere Informationen: Communitytools