none
Find a Guid of lookup custom field - programmatically RRS feed

  • Question

  • hello forum members,

    I am trying to update a project custom field that is based on lookup table and can't figure out how to find a look up table value' GUID. Here is what i got so far. Any ideas are appreciated. 

     // LookupTable web service  
                        SvcLookupTable.LookupTableDataSet lookupTableDs = lookupTableClient.ReadLookupTables(string.Empty, false, 1033);

                        SvcCustomFields.CustomFieldDataSet customFieldDs = customFieldsClient.ReadCustomFields(string.Empty, false);
                        SvcCustomFields.CustomFieldDataSet.CustomFieldsDataTable cfDataTable = customFieldDs.CustomFields;

                        for (int i = 0; i < cfDataTable.Count; i++)
                        {
                            if (cfDataTable[i].MD_PROP_NAME == "Investment Type")
                            {
                                _lookupCustomFieldGuid = cfDataTable[i].MD_PROP_UID; //not correct, find by value
                                _lookupTableUid = cfDataTable[i].MD_LOOKUP_TABLE_UID;

                                break;
                            }

                        }


    tatiana



    Monday, September 8, 2014 4:48 PM

Answers

  • never mind. i figure it out. here is the correct code

     // LookupTable web service  
                        using (SvcLookupTable.LookupTableDataSet lookupTableDs = lookupTableClient.ReadLookupTables(string.Empty, false, 1033))
                        {
                            Guid ltGuid = Guid.Empty;

                            //find given table name in returned dataset
                            foreach (DataRow row in lookupTableDs.LookupTables)
                            {
                                string name = (string)row[lookupTableDs.LookupTables.LT_NAMEColumn];
                                if (name == "Investment Type")
                                {

                                    ltGuid = (Guid)row[lookupTableDs.LookupTables.LT_UIDColumn];
                                    if (ltGuid != Guid.Empty)
                                    {
                                        Console.WriteLine("Found existing LookupTable, Guid: {0}", ltGuid.ToString());
                                    }
                                    break;

                                }
                            }
                            Guid cfGuid = Guid.Empty;

                            //now, we search through Lookup table for the text value which corresponds to guid found in previous loop
                            for (int i = 0; i < lookupTableDs.LookupTableTrees.Count; i++)
                            {
                                try
                                {
                                    if (lookupTableDs.LookupTableTrees[i].LT_UID == ltGuid && lookupTableDs.LookupTableTrees[i].LT_VALUE_TEXT == "Project")
                                    {
                                        //get guid
                                        cfGuid = lookupTableDs.LookupTableTrees[i].LT_STRUCT_UID; //this is correct guid
                                        cfRowText.CODE_VALUE = cfGuid;
                                        break;
                                    }
                                }
                                catch (Exception)
                                {
                                    //this is only for possible null values
                                }

                            }
                        }                  


    tatiana

    • Marked as answer by tatiana obrien Monday, September 8, 2014 7:50 PM
    Monday, September 8, 2014 7:50 PM