Sometime customers have requirement to create MS CRM records through custom asp.net pages, and if we have optionset in that entity we might want to display optionset valeus in dropdownlist. So we can use below code to populate optionset values in dropdownlist.
public Dictionary<int, string> RetrieveOptionsetMetadata(IOrganizationService _iOgranizationService)
{ //Dictionary to store value and text
Dictionary<int,string> _DropdownDatasource=newDictionary<int,string>();
//Create request to fetch optionset
RetrieveAttributeRequest _Request = new RetrieveAttributeRequest{
EntityLogicalName =“EntityName”,
LogicalName =“OptionsetFieldName”,
RetrieveAsIfPublished =true
};
// Execute the request
RetrieveAttributeResponse _Response =(RetrieveAttributeResponse)_iOgranizationService.Execute(_Request);
PicklistAttributeMetadata _PicklistAttributeMetadata = (PicklistAttributeMetadata)_Response.AttributeMetadata;
OptionMetadata[] optionList =_PicklistAttributeMetadata.OptionSet.Options.ToArray();
foreach (OptionMetadata _Optionset in optionList) {
_DropdownDatasource.Add(int.Parse(_Optionset.Value.ToString()), _Optionset.Label.UserLocalizedLabel.Label);
}
return _DropdownDatasource;
}
After that we can set datasource for dropdownlist like below
DropDownList1.DataSource = RetrieveOptionsetMetadata(_iOgranizationService);
DropDownList1.DataBind();
Enjoy !!!