Colonnes de choix
Les personnalisateurs peuvent définir une colonne qui offre la sélection de plusieurs options. La classe MultiSelectPicklistAttributeMetadata définit un type de colonne qui hérite de la classe EnumAttributeMetadata. Comme la classe PicklistAttributeMetadata, cette colonne comprend une propriété OptionSetMetadata.Options qui contient les options valides pour la colonne. La différence est que les valeurs que vous obtenez ou définissez sont d’un type OptionSetValueCollection contenant un éventail d’entiers représentant les options sélectionnées. Les valeurs mises en forme pour cette colonne sont une chaîne séparée par des points-virgules contenant les Étiquettes des options sélectionnées.
Notes
Seul l’éditeur d’un solution gérée peut importer des modifications qui suppriment une option d’un groupe d’options global. Cela inclut les solutions publiées par Microsoft telles que les groupes d’options globales prêtes à l’emploi. Afin d’apporter des modifications aux groupes d’options, il est nécessaire de mettre à niveau la solution qui a ajouté le groupe d’options. Pour plus d’informations : Mettre à niveau ou mettre à jour une solution. Les utilisateurs peuvent supprimer manuellement une option dans leur environnement s’ils ne parviennent pas à modifier la solution ou à contacter l’éditeur de la solution, mais cette opération doit être effectuée manuellement sur chaque environnement.
Avec l’API web, cette colonne est définie à l’aide de MultiSelectPicklistAttributeMetadata EntityType.
Comme les colonnes de choix, il n’existe techniquement pas de limite supérieure pour le nombre d’options qui peuvent être définies. Les considérations d’ordre pratique doivent être déterminer le facteur de limitation. Néanmoins, seules 150 options peuvent être sélectionnées pour une colonne unique. En outre, la valeur par défaut ne peut pas être définie.
Définition des valeurs des choix
Les exemples suivants montrent comment définir des valeurs de choix pour une colonne nommée sample_outdooractivities
ajoutée à la table contact
.
Avec l’API web, vous définissez les valeurs en passant une chaîne contenant des numéros séparés par des virgules :
Demande :
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"
}
Réponse :
HTTP/1.1 204 No Content
OData-Version: 4.0
OData-EntityId: [organization uri]/api/data/v9.0/contacts(0c67748a-b78d-e711-811c-000d3a75bdf1)
Interroger des données à partir de choix
Deux nouveaux opérateurs de condition ont été ajoutés pour prendre en charge l’interrogation des valeurs dans les choix :
API web | FetchXml | ConditionOperator |
---|---|---|
ContainValues | contain-values |
ContainValues |
DoesNotContainValues | not-contain-values |
DoesNotContainValues |
Notes
Ces opérateurs dépendent de l’indexation de texte intégral à appliquer sur les tables de base de données qui stockent les valeurs multiples. Il y a une certaine latence une fois que les enregistrements sont créés et que l’index de texte intégral est appliqué. Vous devrez peut-être attendre quelques secondes après la création des enregistrements avant que les filtres utilisant ces opérateurs puissent évaluer les valeurs.
Les autres opérateurs de condition existant qui peuvent être utilisés avec ce type de colonne comprennent ce qui suit :
API web | FetchXml | ConditionOperator |
---|---|---|
eq |
eq |
Equal |
ne |
neq |
NotEqual |
not null |
not-null |
NotNull |
eq null |
null |
Null |
In | in |
In |
NotIn | not-in |
NotIn |
Les exemples suivants illustrent l’utilisation des opérateurs ContainValues
et DoesNotContainValues
contre le jeu de données suivant sur la colonne de choix nommée sample_outdooractivities
sur la table contact
.
Valeurs de choix sample_outdooractivities
valeur | Étiquette |
---|---|
1 | Natation |
2 | Randonnée |
3 | Alpinisme |
4 | Pêche |
5 | Chasse |
6 | Exécution en cours |
7 | Canotage |
8 | Ski |
9 | Camping |
Valeurs de table de contact
fullname |
« sampleoutdooractivities » |
---|---|
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 |
Cet exemple explique l’utilisation de la fonction de requête ContainValues pour obtenir tous les contacts qui aiment la randonnée. Remarquez comment le texte des options est retourné sous la forme d’annotations suite à la préférence appliquée odata.include-annotations="OData.Community.Display.V1.FormattedValue"
.
Demande :
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"
Réponse :
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"
}]
}
Exemple de code utilisant FetchXML
Le code suivant montre l’utilisation de FetchXml avec l’API web et le Kit de développement logiciel (SDK) pour .NET.
Cet exemple explique l’utilisation de l’opérateur not-contain-values
dans la requête FetchXml
suivante à l’aide de l’API web.
<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>
Demande :
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"
Réponse :
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"
}]
}
Créer des choix avec du code
La manière la plus simple de créer des choix consiste à utiliser l’éditeur de colonne dans les outils de personnalisation. Pour plus d’informations : Créer et modifier des colonnes
Cependant, si vous devez automatiser la création de ce type de colonne, vous pouvez utiliser un code C# tel que celui qui suit le Kit de développement logiciel (SDK) pour .NET qui crée une des choix pour choisir les activités de plein air pour la table contact
. Pour plus d’informations, consultez Créer des colonnes
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);
Voir aussi
Définitions de colonne
Créer une ligne de table à l’aide de l’API web
Interroger des données à l’aide de l’API Web
Utiliser des définitions de colonne
Exemple : Utiliser des définitions de colonne
Programmation avec liaison tardive et anticipée à l’aide du SDK pour .NET
Notes
Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)
Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).