CRM 2011 にオプション セットがあります。次の 4 つのオプションがあります。
- 公衆
- プライベート
- 子会社
- 他の
プラグインを介して、このオプション セットの値を設定したいと考えています。このオプション セットの値を設定するためのステートメントを誰かに教えてもらえますか?
CRM 2011 にオプション セットがあります。次の 4 つのオプションがあります。
プラグインを介して、このオプション セットの値を設定したいと考えています。このオプション セットの値を設定するためのステートメントを誰かに教えてもらえますか?
プラグインでは、次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;