Archive
Reading Optionset using CRM 2011 IOrganizationService
Hi,
Below is the code to read “Optionset” using CRM 2011 IOrganizationService.
Below logic reads the Optionset and returns “KeyValue” list (Key = Option Label; Value = Option Value)
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Client;
using Microsoft.Xrm.Sdk.Query;
using Microsoft.Xrm.Sdk.Messages;
using Microsoft.Xrm.Sdk.Metadata;
public List<KeyValuePair<string, int>> GetOptionSet(string entityName, string attributeName, IOrganizationService service)
{
var optionSet = new List<KeyValuePair<string, int>>();
RetrieveAttributeRequest request = new RetrieveAttributeRequest();
request.EntityLogicalName = entityName;
request.MetadataId = Guid.Empty;
request.LogicalName = attributeName;
request.RetrieveAsIfPublished = true;
OrganizationResponse response = service.Execute(request);
if (response != null && response.Results != null)
{
foreach (KeyValuePair param in response.Results)
{
foreach (OptionMetadata option in ((EnumAttributeMetadata)param.Value).OptionSet.Options)
{
string name = option.Label.LocalizedLabels[0].Label.ToString().Trim();
int value = option.Value.Value;
optionSet.Add(new KeyValuePair(name, value));
}
}
}
return optionSet;
}
// Returns option label by value
public string GetOptionLabelByValue(List<KeyValuePair<string, int>> optionSet, int optValue)
{
foreach (KeyValuePair< string, int> optn in optionSet)
{
if (optn.Value == optValue)
{
return optn.Key;
}
}
return string.Empty;
}
// Returns option Value by Label
public int GetOptionValueByLabel(List<KeyValuePair<string, int>> optionSet, string optLabel) { {
foreach (KeyValuePairoptn in optionSet)
{
if (optn.Key) == optLabel)
{
return optn.Value;
}
}
return 0;
}
How Do I call these methods:-
- To read ‘Gender (i.e., gendercode)’ optionset of entity ‘Contact (i.e., contact)’
- Get Optionset dictionary by calling “GetOptionSet()” method
- Call “GetOptionLabelName()” to get Label by Value
- Call “GetOptionValueByLabel()” to get Value by Label
// Get OptionSet First
var optGender = GetOptionSet(“contact”, “gendercode”, orgService);
// Get Option label by value
string optLblGander = GetOptionLabelName(optGender , 1); /* 1 is Value of Male */
// To get Option Value by Label
int optValueGander = GetOptionValueByLabel(optGender , “Male”);
Hope it helps 🙂
Stats
- 1,606,866 hits
Top Posts
- [Step by Step] Power Apps | Show pop ups in Canvas App
- Power Apps component framework (PCF) - Beginner guide
- Associate/Disassociate plugin messages in CRM
- [Step by Step] Create and call Global Custom API from Canvas App using Power Automate with Error Handling
- Power Platform - Pass json collection from Canvas App to Power Automate
- [Experimental Feature] Call Dataverse actions directly in Power Fx
- [Step by Step] Connecting to Azure SQL Server using OLEDB Connection from SSIS
- Power Automate Cloud Flow | 'Correct to include a valid reference' error
- [Code Snippet] Custom Workflow Activity with Input and Output Params
- [Step by Step] Postman tool with Microsoft Dataverse Web API