如何在CRM 2011中设置选项集值?

时间:2012-05-04 05:41:40

标签: dynamics-crm-2011

我在CRM 2011中设置了一个选项。它有四个选项:

  1. 公开
  2. 私人
  3. 子公司
  4. 其他
  5. 通过插件我想设置此选项集的值。任何人都可以向我提供设置此选项集的值的声明吗?

3 个答案:

答案 0 :(得分:10)

How to set optionsetvalue in plugins

在插件中,您可以编写yourEntity.yourAttribute = new OptionSetValue(INDEX); INDEX是一个可以在选项集编辑器中查找的int(默认值是几位数)。

OR

您可以将选项集设置为yourEntity.Attributes.Add(“yourAttribute”, new OptionSetValue(INDEX));

答案 1 :(得分:8)

您可以使用以下方法设置选项设定值: -

OptionSetValue myOptionSet = new OptionSetValue();
myOptionSet.Value = xxxx  
myEntity.Attributes["optionSetAttributeName"] = myOptionSet;

//其中xxxx表示所需的值,可以在实体自定义中的属性元数据页面上进行检查

'myEntity'实际上是preImage / postImage还是只是插件中动态创建的实体将决定你是否需要实际调用更新方法,但实际上这是你设置选项设置值并更新属性。

答案 2 :(得分:0)

我以为我会在这里分享一些用于处理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;