Freigeben über


Auswahlspalten

Customizer können eine Spalte definieren, die die Auswahl mehrerer Optionen ermöglicht. Die MultiSelectPicklistAttributeMetadata Klasse definiert einen Spaltentyp, der von der EnumAttributeMetadata Klasse erbt. Genau wie die PicklistAttributeMetadata Klasse enthält diese Spalte eine OptionSetMetadata.Options-Eigenschaft , 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 Semikolons getrennte Zeichenfolge, die die Beschriftungen der ausgewählten Optionen enthält.

Hinweis

Nur der Herausgeber einer verwalteten 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 auf die Lösung vorgenommen werden, die den Optionssatz hinzugefügt hat. Erfahren Sie mehr über die Aktualisierung oder das Upgrade einer Lösung. Benutzer können eine Option in ihrer Umgebung manuell löschen, wenn sie die Lösung nicht ändern oder sich an den Lösungsherausgeber wenden können. Dies muss jedoch für jede Umgebung manuell erfolgen.

Mit der Web-API wird diese Spalte mithilfe des MultiSelectPicklistAttributeMetadata EntityType definiert.

Genau wie auswahlspalten gibt es technisch 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 kein Standardwert festgelegt werden.

Festlegen von Auswahlwerten

Die folgenden Beispiele zeigen, wie Auswahlwerte für eine Spalte sample_outdooractivities festgelegt werden, die der contact Tabelle hinzugefügt wurde.

Mit der Web-API legen Sie die Werte fest, indem Sie eine Zeichenfolge übergeben, die durch Kommas getrennte Zahlenwerte enthält:

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(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)

Daten aus Auswahl abfragen

Zwei Bedingungsoperatoren unterstützen das Abfragen von Werten in Auswahlmöglichkeiten:

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

Hinweis

Diese Operatoren hängen von der Volltextindizierung ab, die auf die Datenbanktabellen angewendet werden soll, in denen die mehrere Werte gespeichert werden. Es gibt eine Latenz, nachdem neue Datensätze erstellt wurden und der Volltextindex wirksam wird. Möglicherweise müssen Sie mehrere Sekunden warten, nachdem neue Datensätze erstellt wurden, bevor Filter mit diesen Operatoren die Werte auswerten können.

Andere vorhandene Bedingungsoperatoren, die mit diesem Spaltentyp verwendet werden können, umfassen Folgendes:

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 der ContainValues und DoesNotContainValues Operatoren gegen die folgende Datenmenge auf der Auswahlspalte namens sample_outdooractivities auf der contact Tabelle.

Auswahlwerte sample_outdooractivities

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

Werte der Kontakttabelle

fullname Beispiel_Outdoor-Aktivitäten
Wayne Yarborough 1, 9
Monte Orton 2
Randale 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 Abfragefunktion, um alle Kontakte zurückzugeben, die wandern möchten. 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 mit FetchXml

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

In diesem Beispiel wird die Verwendung des not-contain-values Operators in der folgenden FetchXml Abfrage mithilfe der Web-API veranschaulicht.

<fetch>
    <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 Auswahlmöglichkeiten mit Code

Die einfachste Möglichkeit zum Erstellen von Auswahlmöglichkeiten besteht darin, den Spalten-Editor in den Anpassungstools zu verwenden. Erfahren Sie, wie Sie Spalten erstellen und bearbeiten.

Wenn Sie die Erstellung dieser Art von Spalte automatisieren müssen, können Sie den folgenden C#-Code mit dem SDK für .NET verwenden, der Auswahlmöglichkeiten für Outdoor-Aktivitäten für die contact Tabelle erstellt. Weitere Informationen zum Erstellen von Spalten

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 mithilfe der Web-API
Datenabfrage mit Web-API
Arbeiten mit Spaltendefinitionen
Beispiel: Arbeiten mit Spaltendefinitionen
Spät gebundene und früh gebundene Programmierung mit dem SDK für .NET