Choices-Spalten

Anpasser können eine Spalte definieren, die die Auswahl von mehreren Optionen zulässt. Die Klasse MultiSelectPicklistAttributeMetadata definiert einen Spaltentyp, der von der Klasse EnumAttributeMetadata erbt. Genau wie die Klasse PicklistAttributeMetadata enthält diese Spalte eine Eigenschaft OptionSetMetadata.Options, die die gültigen Optionen für die Spalte enthält. Der Unterschied besteht darin, dass die Werte, die Sie erhalten oder einstellen, ein OptionSetValueCollection-Typ sind, der ein Array von ganzen Zahlen enthält, die für die ausgewählten Optionen stehen. Formatierte Werte für diese Spalte sind eine durch Semikolon getrennte Zeichenkette, die die Labels der ausgewählten Optionen enthält.

Hinweis

Nur der Herausgeber eines verwaltete Lösung kann Änderungen importieren, die eine Option aus einem globalen Optionssatz löschen. Dazu gehören von Microsoft veröffentlichte Lösungen wie die sofort einsatzbereiten globalen Optionssätze. Um eine Änderung an den Optionssätzen vorzunehmen, muss ein Upgrade für die Lösung durchgeführt werden, die den Optionssatz hinzugefügt hat. Weitere Informationen: Upgraden oder Aktualisieren einer Lösung. Benutzer können eine Option in ihrer Umgebung manuell löschen, wenn sie die Lösung nicht ändern oder den Lösungsherausgeber kontaktieren können, aber dies muss in jeder Umgebung manuell erfolgen.

Bei der Web-API wird diese Spalte mit der MultiSelectPicklistAttributeMetadata EntityType definiert.

Genau wie bei den Spalten für das Auswählen gibt es technisch gesehen keine Obergrenze für die Anzahl der Optionen, die definiert werden können. Benutzerfreundlichkeitsüberlegungen müssen als einschränkende Faktor angewendet werden. Es können jedoch nur 150 Optionen für eine einzelne Spalte ausgewählt werden. Außerdem kann ein Standardwert nicht festgelegt werden.

Festlegen von Auswahlwerten

Die folgenden Beispiele zeigen, wie Auswahlwerte für eine Spalte mit dem Namen sample_outdooractivities der contact-Tabelle hinzugefügt werden.

Mit der Web-API können Sie die Werte durch Übergeben einer Zeichenfolge durch Trennzeichen getrennter Zahlenwerte festlegen:

Anforderung:

POST [organization uri]/api/data/v9.0/contacts HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0

{
    "@odata.type": "Microsoft.Dynamics.CRM.contact",
    "firstname": "Wayne",
    "lastname": "Yarborough",
    "sample_outdooractivities": "1, 9"
}

Antwort:

HTTP/1.1 204 No Content
OData-Version: 4.0
OData-EntityId: [organization uri]/api/data/v9.0/contacts(0c67748a-b78d-e711-811c-000d3a75bdf1)

Abfrage von Daten aus Auswahlen

Zwei neue Bedingungsoperatoren wurden hinzugefügt, um die Abfrage von Werten in Auswahlen zu unterstützen:

Web-API FetchXML ConditionOperator
ContainValues contain-values ContainValues
DoesNotContainValues not-contain-values DoesNotContainValues

Hinweis

Die Operatoren hängen von der Anwendung der Volltextindizierung auf die Datenbanktabellen ab, die mehrere Werte speichern. Es gibt eine Latenz, wenn neue Datensätze erstellt werden und der Volltextindex wirksam wird. Sie müssen einige Sekunden warten, wenn neue Datensätze optimiert sind, bevor Filter mithilfe dieser Operatoren die Werte auswerten können.

Andere vorhandene Bedingungsoperatoren, die mit diesem Typ von Spalte verwendet werden, einschließlich der folgenden:

Web-API FetchXML ConditionOperator
eq eq Equal
ne neq NotEqual
not null not-null NotNull
eq null null Null
In in In
NotIn not-in NotIn

Die folgenden Beispiele zeigen die Verwendung von ContainValues- und DoesNotContainValues-Operatoren gegen die folgenden Datasets in der Auswahlspalte sample_outdooractivities in der contact-Tabelle.

Auswahlen sample_outdooractivities-Werte

Wert Label
1 Schwimmen
2 Wandern
3 Bergsteigen
4 Angeln
5 Jagen
6 Laufen
7 Bootfahren
8 Skifahren
9 Camping

Werte der Contact-Tabelle

fullname „sample_outdooractivities“
Wayne Yarborough 1, 9
Monte Orton 2
Randal Maple 4
Hiram Mundy 2,3,8,9
Barbara Weber 1,4,7
Georgette Sullivan 4, 5, 9
Verna Kennedy 2, 4, 9
Marvin Bracken 1, 2, 8, 9

Dieses Beispiel zeigt die Verwendung der ContainValues-Abfragenfunktion, um alle Kontakte anzuzeigen, denen Wandern gefällt. Beachten Sie, wie der Text der Optionen als Anmerkungen aufgrund der übernommenen odata.include-annotations="OData.Community.Display.V1.FormattedValue"-Einstellung zurückgegeben wird.

Anforderung:

GET [organization uri]/api/data/v9.0/contacts?$select=fullname,sample_outdooractivities&$filter=Microsoft.Dynamics.CRM.ContainValues(PropertyName='sample_outdooractivities',PropertyValues=%5B'2'%5D) HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
Prefer: odata.include-annotations="OData.Community.Display.V1.FormattedValue"

Antwort:

HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
OData-Version: 4.0
Preference-Applied: odata.include-annotations="OData.Community.Display.V1.FormattedValue"
Content-Length: 1092

{
    "@odata.context": "[organization uri]/api/data/v9.0/$metadata#contacts(fullname,sample_outdooractivities)",
    "value": [{
        "@odata.etag": "W/\"529811\"",
        "fullname": "Monte Orton",
        "sample_outdooractivities@OData.Community.Display.V1.FormattedValue": "Hiking",
        "sample_outdooractivities": "2",
        "contactid": "cdbcc48e-0b8d-e711-811c-000d3a75bdf1"
    }, {
        "@odata.etag": "W/\"529823\"",
        "fullname": "Hiram Mundy",
        "sample_outdooractivities@OData.Community.Display.V1.FormattedValue": "Hiking; Mountain Climbing; Skiing; Camping",
        "sample_outdooractivities": "2,3,8,9",
        "contactid": "d7bcc48e-0b8d-e711-811c-000d3a75bdf1"
    }, {
        "@odata.etag": "W/\"529838\"",
        "fullname": "Verna Kennedy",
        "sample_outdooractivities@OData.Community.Display.V1.FormattedValue": "Hiking; Fishing; Camping",
        "sample_outdooractivities": "2,4,9",
        "contactid": "e6bcc48e-0b8d-e711-811c-000d3a75bdf1"
    }, {
        "@odata.etag": "W/\"529843\"",
        "fullname": "Marvin Bracken",
        "sample_outdooractivities@OData.Community.Display.V1.FormattedValue": "Swimming; Hiking; Skiing; Camping",
        "sample_outdooractivities": "1,2,8,9",
        "contactid": "ebbcc48e-0b8d-e711-811c-000d3a75bdf1"
    }]
}

Beispielcode mithilfe von FetchXML

Der folgende Code zeigt die Verwendung von FetchXML mit Web-API und SDK für .NET.

Dieses Beispiel zeigt die Verwendung des not-contain-values-Operators in der folgenden FetchXml-Abfrage mit Web-API.

<fetch distinct='false' no-lock='false' mapping='logical'>
    <entity name='contact'>
        <attribute name='fullname' />
        <attribute name='sample_outdooractivities' />
            <filter type='and'>
                <condition attribute='sample_outdooractivities' operator='not-contain-values'>
                    <value>2</value>
                </condition>
            </filter>
    </entity>
</fetch>

Anforderung:

GET [organization uri]/api/data/v9.0/contacts?fetchXml=%253Cfetch%2520distinct%253D'false'%2520no-lock%253D'false'%2520mapping%253D'logical'%253E%253Centity%2520name%253D'contact'%253E%253Cattribute%2520name%253D'fullname'%2520%252F%253E%253Cattribute%2520name%253D'sample_outdooractivities'%2520%252F%253E%253Cfilter%2520type%253D'and'%253E%253Ccondition%2520attribute%253D'sample_outdooractivities'%2520operator%253D'not-contain-values'%253E%253Cvalue%253E2%253C%252Fvalue%253E%253C%252Fcondition%253E%253C%252Ffilter%253E%253C%252Fentity%253E%253C%252Ffetch%253E HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
Prefer: odata.include-annotations="OData.Community.Display.V1.FormattedValue"

Antwort:

HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
OData-Version: 4.0
Preference-Applied: odata.include-annotations="OData.Community.Display.V1.FormattedValue"

{
    "@odata.context": "[organization uri]/api/data/v9.0/$metadata#contacts(fullname,sample_outdooractivities,contactid)",
    "value": [{
        "@odata.etag": "W/\"529806\"",
        "fullname": "Wayne Yarborough",
        "sample_outdooractivities@OData.Community.Display.V1.FormattedValue": "Swimming; Camping",
        "sample_outdooractivities": "1,9",
        "contactid": "c8bcc48e-0b8d-e711-811c-000d3a75bdf1"
    }, {
        "@odata.etag": "W/\"529816\"",
        "fullname": "Randal Maple",
        "sample_outdooractivities@OData.Community.Display.V1.FormattedValue": "Fishing",
        "sample_outdooractivities": "4",
        "contactid": "d2bcc48e-0b8d-e711-811c-000d3a75bdf1"
    }, {
        "@odata.etag": "W/\"529828\"",
        "fullname": "Barbara Weber",
        "sample_outdooractivities@OData.Community.Display.V1.FormattedValue": "Swimming; Fishing; Boating",
        "sample_outdooractivities": "1,4,7",
        "contactid": "dcbcc48e-0b8d-e711-811c-000d3a75bdf1"
    }, {
        "@odata.etag": "W/\"529833\"",
        "fullname": "Georgette Sullivan",
        "sample_outdooractivities@OData.Community.Display.V1.FormattedValue": "Fishing; Hunting; Camping",
        "sample_outdooractivities": "4,5,9",
        "contactid": "e1bcc48e-0b8d-e711-811c-000d3a75bdf1"
    }]
}

Erstellen von Auswahlen mit Code

Der einfachste Weg, Auswahlmöglichkeiten zu erstellen, ist die Verwendung des Spalten-Editors in den Anpassungstools. Weitere Informationen: So erstellen und bearbeiten Sie Spalten

Aber, wenn Sie die Erstellung dieser Art Spalte automatisieren möchten, können Sie C#-Code beispielsweise folgende mit dem SDK für .NET verwenden, das Auswahlen erstellt, um in der contact-Tabelle die Auswahl von Aktivitäten im Freien zu erlauben. Weitere Informationen: Spalten erstellen

private const int _languageCode = 1033; //English

MultiSelectPicklistAttributeMetadata outDoorActivitiesAttribute = new MultiSelectPicklistAttributeMetadata()
{
SchemaName = "sample_OutdoorActivities",
LogicalName = "sample_outdooractivities",
DisplayName = new Label("Outdoor activities", _languageCode),
RequiredLevel = new AttributeRequiredLevelManagedProperty(AttributeRequiredLevel.None),
Description = new Label("Outdoor activities that the contact likes.", _languageCode),
OptionSet = new OptionSetMetadata()
    {
        IsGlobal = false,
        OptionSetType = OptionSetType.Picklist,
        Options = {
            new OptionMetadata(new Label("Swimming",_languageCode),1),
            new OptionMetadata(new Label("Hiking",_languageCode),2),
            new OptionMetadata(new Label("Mountain Climbing",_languageCode),3),
            new OptionMetadata(new Label("Fishing",_languageCode),4),
            new OptionMetadata(new Label("Hunting",_languageCode),5),
            new OptionMetadata(new Label("Running",_languageCode),6),
            new OptionMetadata(new Label("Boating",_languageCode),7),
            new OptionMetadata(new Label("Skiing",_languageCode),8),
            new OptionMetadata(new Label("Camping",_languageCode),9)}
    }
};

CreateAttributeRequest createAttributeRequest = new CreateAttributeRequest
{
    EntityName = "contact",
    Attribute = outDoorActivitiesAttribute
};

var response = (CreateAttributeResponse)service.Execute(createAttributeRequest);

Siehe auch

Spaltendefinitionen
Erstellen einer Tabellenzeile über die Web-API
Datenabfrage mit Web-API
Arbeiten mit Spaltendefinitionen
Beispiel: Arbeiten mit Spaltendefinitionen
Programmierung mit später und früher Bindung mithilfe des SDK für .NET

Hinweis

Können Sie uns Ihre Präferenzen für die Dokumentationssprache mitteilen? Nehmen Sie an einer kurzen Umfrage teil. (Beachten Sie, dass diese Umfrage auf Englisch ist.)

Die Umfrage dauert etwa sieben Minuten. Es werden keine personenbezogenen Daten erhoben. (Datenschutzbestimmungen).