2012-05-04 22 views

Respuesta

8

Se puede establecer un valor conjunto de opciones utilizando la siguiente: -

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

// Donde xxxx representa el valor deseado y se puede comprobar en la página atributo de metadatos dentro de las personalizaciones de entidades

si la " myEntity 'es en realidad preImage/postImage o simplemente una entidad creada dinámicamente en el complemento determinará si necesita llamar realmente al método de actualización, pero esencialmente esta es la manera en que establece la opción set value y actualiza el atributo.

+0

Así, hace xxxx representan el el valor de texto real de la opción, o el índice de la opción seleccionada? – CompanyDroneFromSector7G

+0

El índice es el valor, el texto es solo una etiqueta asociada con ese valor. –

10

How to set optionsetvalue in plugins

En plugins puede escribir yourEntity.yourAttribute = new OptionSetValue(INDEX); El índice es un int puede buscar en su editor optionset (valores por defecto son varios dígitos de largo).

O

Se establece el optionset como yourEntity.Attributes.Add(“yourAttribute”, new OptionSetValue(INDEX));

0

pensé que me gustaría compartir algo de código para la configuración futura conjuntos de CRM aquí ...

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; 
Cuestiones relacionadas