Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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