Получить наборы опций в динамике 2011 - PullRequest
3 голосов
/ 29 марта 2011

Я использую этот код для получения глобальных наборов опций

var request = new RetrieveOptionSetRequest {Name = "OptionsetNameGoesHere"};
var retrieveOptionSetResponse =(RetrieveOptionSetResponse) DynamicsHandler._serviceProxy.Execute(request);
var retrievedOptionSetMetadata =(OptionSetMetadata) retrieveOptionSetResponse.OptionSetMetadata;
var optionList = retrievedOptionSetMetadata.Options.ToArray();

foreach (var optionMetadata in optionList)
{
   Printout(optionMetadata.Label.LocalizedLabels[0].Label + "\n");
}

Но как мне получить наборы опций, такие как AccountCategory (AccountCategoryCode), чтобы я мог связать их с Combobox?

Ответы [ 2 ]

4 голосов
/ 29 марта 2011

Вы должны получить его с RetrieveAttributeRequest . Он вернет RetrieveAttributeResponse , который содержит свойство AttributeMetadata .

В вашем случае это должен быть тип OptionSetMetadata , который вы ищете.

2 голосов
/ 05 ноября 2014

Вот как я решил эту проблему. CRMBase - это мой базовый класс с подключением к экземпляру CRM. Код языка: C #

public static Dictionary<int, string> GetAll(CRMBase conn, string entityName, string attributeName)
{
     OptionMetadataCollection result = RetrieveOptionSetMetaDataCollection(conn, entityName,           attributeName);
     return result.Where(r => r.Value.HasValue).ToDictionary(r => r.Value.Value, r => r.Label.UserLocalizedLabel.Label);
}

// Method to retrieve OptionSet Options Metadadata collection.
private static OptionMetadataCollection RetrieveOptionSetMetaDataCollection(CRMBase conn, string prmEntityName, string prmAttributeName)
{
     RetrieveEntityRequest retrieveEntityRequest = new RetrieveEntityRequest();

     retrieveEntityRequest.LogicalName = prmEntityName;

     retrieveEntityRequest.EntityFilters = Microsoft.Xrm.Sdk.Metadata.EntityFilters.Attributes;

     RetrieveEntityResponse retrieveEntityResponse = (RetrieveEntityResponse)conn._orgContext.Execute(retrieveEntityRequest);

     return (from AttributeMetadata in retrieveEntityResponse.EntityMetadata.Attributes where 
     (AttributeMetadata.AttributeType == AttributeTypeCode.Picklist & AttributeMetadata.LogicalName == prmAttributeName) 
     select ((PicklistAttributeMetadata)AttributeMetadata).OptionSet.Options).FirstOrDefault();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...