2012-05-04 5 views
5

tôi có một lựa chọn thiết lập trong CRM 2011. Nó có bốn lựa chọn:Cách đặt giá trị Đặt tùy chọn trong CRM 2011?

  1. Công
  2. Private
  3. Công ty con
  4. khác

Qua plugin tôi muốn thiết lập các giá trị của tùy chọn này được đặt. Bất cứ ai có thể cung cấp cho tôi tuyên bố để thiết lập giá trị của bộ tùy chọn này?

Trả lời

8

Bạn có thể thiết lập một giá trị tùy chọn thiết lập bằng cách sử dụng sau đây: -

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

// đâu xxxx đại diện cho giá trị mong muốn và có thể được kiểm tra trên trang siêu dữ liệu thuộc tính trong các tùy biến thực thể

Cho dù ' myEntity 'thực sự là preImage/postImage hoặc chỉ là một thực thể được tạo động trong trình cắm thêm sẽ xác định xem bạn có cần gọi phương thức cập nhật hay không, nhưng về cơ bản đây là cách bạn đặt giá trị thiết lập tùy chọn và cập nhật thuộc tính.

+0

Vì vậy, không đại diện cho xxxx giá trị văn bản thực tế của tùy chọn hoặc chỉ mục của tùy chọn đã chọn? – CompanyDroneFromSector7G

+0

Chỉ mục là giá trị, văn bản chỉ là nhãn được liên kết với giá trị đó. –

10

How to set optionsetvalue in plugins

Trong plugin bạn có thể viết yourEntity.yourAttribute = new OptionSetValue(INDEX); Các INDEX là một int bạn có thể tra cứu trong trình soạn thảo optionset của bạn (giá trị mặc định một số chữ số dài).

HOẶC

Bạn đặt optionset như yourEntity.Attributes.Add(“yourAttribute”, new OptionSetValue(INDEX));

0

tôi nghĩ rằng tôi muốn chia sẻ một số mã để xử lý tùy chọn-bộ trong CRM đây ...

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;