1: private string GetMetadataValue(object oAttribute, RetrieveAttributeResponse attMetadata)
2: {
3: string sReturn = string.Empty;
4: if (oAttribute.GetType().Equals(typeof(Microsoft.Xrm.Sdk.OptionSetValue)))
5: {
6:
7: OptionMetadata[] optionList = null;
8: // Access the retrieved attribute.
9: //'Microsoft.Xrm.Sdk.Metadata.PicklistAttributeMetadata'
10: if (attMetadata.AttributeMetadata.GetType().FullName.Contains("PicklistAttributeMetadata"))
11: {
12: PicklistAttributeMetadata retrievedPicklistAttributeMetadata =
13: (PicklistAttributeMetadata)attMetadata.AttributeMetadata;
14: // Get the current options list for the retrieved attribute.
15: optionList = retrievedPicklistAttributeMetadata.OptionSet.Options.ToArray();
16: }
17: else if (attMetadata.AttributeMetadata.GetType().FullName.Contains("StatusAttributeMetadata"))
18: {
19: StatusAttributeMetadata retrievedPicklistAttributeMetadata =
20: (StatusAttributeMetadata)attMetadata.AttributeMetadata;
21: // Get the current options list for the retrieved attribute.
22: optionList = retrievedPicklistAttributeMetadata.OptionSet.Options.ToArray();
23: }
24: else if (attMetadata.AttributeMetadata.GetType().FullName.Contains("StateAttributeMetadata"))
25: {
26: StateAttributeMetadata retrievedPicklistAttributeMetadata =
27: (StateAttributeMetadata)attMetadata.AttributeMetadata;
28: // Get the current options list for the retrieved attribute.
29: optionList = retrievedPicklistAttributeMetadata.OptionSet.Options.ToArray();
30: }
31: else
32: return string.Empty;
33: // get the text values
34: int i = int.Parse((oAttribute as Microsoft.Xrm.Sdk.OptionSetValue).Value.ToString());
35: for (int c = 0; c < optionList.Length; c++)
36: {
37: OptionMetadata opmetadata = (OptionMetadata)optionList.GetValue(c);
38: if (opmetadata.Value == i)
39: {
40: sReturn = opmetadata.Label.UserLocalizedLabel.Label;
41: break;
42: }
43: }
44:
45: }
46: else if (oAttribute.GetType().Equals(typeof(Microsoft.Xrm.Sdk.Money)))
47: {
48: sReturn = (oAttribute as Microsoft.Xrm.Sdk.Money).Value.ToString();
49: }
50: else if (oAttribute.GetType().Equals(typeof(Microsoft.Xrm.Sdk.EntityReference)))
51: {
52: sReturn = (oAttribute as Microsoft.Xrm.Sdk.EntityReference).Name;
53: }
54: else
55: {
56: sReturn = oAttribute.ToString();
57: }
58: if (sReturn == null || sReturn.Length == 0)
59: sReturn = "No Value";
60: return sReturn;
61: }