我在 CRM 2011 中设置了一个选项。它有四个选项:
- 上市
- 私人的
- 子公司
- 其他
通过插件我想设置这个选项集的值。谁能提供我设置此选项集值的语句?
在插件中,您可以编写yourEntity.yourAttribute = new OptionSetValue(INDEX);
INDEX 是一个 int,您可以在选项集编辑器中查找(默认值是几位长)。
或者
您将选项集设置为yourEntity.Attributes.Add(“yourAttribute”, new OptionSetValue(INDEX));
您可以使用以下设置选项集值:-
OptionSetValue myOptionSet = new OptionSetValue();
myOptionSet.Value = xxxx
myEntity.Attributes["optionSetAttributeName"] = myOptionSet;
// 其中 xxxx 表示所需的值,可以在实体自定义中的属性元数据页面上进行检查
'myEntity' 实际上是 preImage/postImage 还是只是插件中动态创建的实体将决定您是否需要实际调用更新方法,但本质上这是您设置选项集值和更新属性的方式。
我想我会在这里分享一些用于处理 CRM 中的选项集的代码......
fieldValue = ((OptionSetValue)entity.Attributes[field]).Value.ToString();
//need to get Option Set display label based on its value. This requires getting attribute metadata
RetrieveAttributeRequest attributeRequest = new RetrieveAttributeRequest
{
EntityLogicalName = entity.LogicalName,
LogicalName = field,
RetrieveAsIfPublished = true
};
RetrieveAttributeResponse attributeResponse = (RetrieveAttributeResponse)orgContext.Execute(attributeRequest);
EnumAttributeMetadata attributeMetadata = (EnumAttributeMetadata)attributeResponse.AttributeMetadata;
foreach (OptionMetadata om in attributeMetadata.OptionSet.Options)
{
if (om.Value == ((OptionSetValue)entity.Attributes[field]).Value)
{
fieldlabel = om.Label.UserLocalizedLabel.Label;
}
}
return fieldlabel;