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
Abfragen von Daten mithilfe der 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).