【发布时间】:2014-01-21 14:51:15
【问题描述】:
我正在尝试从我的 CRMOnline 中获取 OptionSet 键=>值。我可以访问 SOAP 端点并且能够执行所有 CRUD 操作。对如何从选项集 SalesStageCode 获取信息稍作停留,以便我可以将其显示在外部帐户创建表单的下拉列表中。
【问题讨论】:
标签: php soap dynamics-crm
我正在尝试从我的 CRMOnline 中获取 OptionSet 键=>值。我可以访问 SOAP 端点并且能够执行所有 CRUD 操作。对如何从选项集 SalesStageCode 获取信息稍作停留,以便我可以将其显示在外部帐户创建表单的下拉列表中。
【问题讨论】:
标签: php soap dynamics-crm
我相信你应该使用 RetrieveAttribute 消息。复查this article
【讨论】:
static Dictionary<String, int> GetNumericValues(IOrganizationService service, String entity, String attribute)
{
RetrieveAttributeRequest request = new RetrieveAttributeRequest
{
EntityLogicalName = entity,
LogicalName = attribute,
RetrieveAsIfPublished = true
};
RetrieveAttributeResponse response = (RetrieveAttributeResponse)service.Execute(request);
switch (response.AttributeMetadata.AttributeType)
{
case AttributeTypeCode.Picklist:
case AttributeTypeCode.State:
case AttributeTypeCode.Status:
return ((EnumAttributeMetadata)response.AttributeMetadata).OptionSet.Options
.ToDictionary(key => key.Label.UserLocalizedLabel.Label, option => option.Value.Value);
case AttributeTypeCode.Boolean:
Dictionary<String, int> values = new Dictionary<String, int>();
BooleanOptionSetMetadata metaData = ((BooleanAttributeMetadata)response.AttributeMetadata).OptionSet;
values[metaData.TrueOption.Label.UserLocalizedLabel.Label] = metaData.TrueOption.Value.Value;
values[metaData.FalseOption.Label.UserLocalizedLabel.Label] = metaData.FalseOption.Value.Value;
return values;
default:
throw new ArgumentOutOfRangeException();
}
}
OptionSetValue optionSetValue = new OptionSetValue(GetNumericValues(proxy, "new_test", "new_local")["One"]);
【讨论】: