2012-05-04 19 views

risposta

8

È possibile impostare un valore di opzione impostato utilizzando il seguente: -

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

// dove xxxx rappresenta il valore desiderato e può essere controllato nella pagina dell'attributo metadata all'interno delle personalizzazioni di entità

Sia ' myEntity 'è in realtà preImage/postImage o solo un'entità creata dinamicamente nel plug-in determinerà se è necessario chiamare effettivamente il metodo di aggiornamento, ma in sostanza questo è il modo in cui si imposta il valore impostato per l'opzione e si aggiorna l'attributo.

+0

Quindi, fa xxxx rappresentano la valore di testo effettivo dell'opzione o l'indice dell'opzione selezionata? – CompanyDroneFromSector7G

+0

L'indice è il valore, il testo è solo un'etichetta associata a quel valore. –

10

How to set optionsetvalue in plugins

In plugin è possibile scrivere yourEntity.yourAttribute = new OptionSetValue(INDEX); l'indice è un int è possibile cercare nel vostro editor di gruppo di opzioni (valori di default sono diverse cifre di lunghezza).

O

Si imposta il gruppo di opzioni come yourEntity.Attributes.Add(“yourAttribute”, new OptionSetValue(INDEX));

0

ho pensato di condividere un codice per la gestione di opzione-set in CRM qui ...

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; 
Problemi correlati