Click here to Skip to main content
15,900,816 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
What modifications need to be made the following code to have it update multiple Custom Fields in one pass. I have everything working up until the point I want to start updating multiple Custom Fields. The current program I’ve put together only results in updating the first ForEach cfValueWOD Custom Field. I can get the code to update multiple fields if they already have a value but for my project these custom fields can either have an initial value or no value to start. In both cases I will need to write values to these fields. I need to complete this for a project at work very soon and I’m at a loss. Your help will be much appreciated. My current code snipit is as follows:

C#
Guid myProjectUid = new Guid("{c96bd7ea-e9d2-47ed-8819-02e4653e92a7}");
           ProjectDataSet myProject = projectSvc.ReadProject(myProjectUid, DataStoreEnum.WorkingStore);
           //indicate the custom field has been found
          bool customFieldFound = false;
           //iterate over fields and update them to the table for WO Status
           foreach (ProjectDataSet.ProjectCustomFieldsRow cfRow in myProject.ProjectCustomFields)
           {
               //if field exists update it
               if (cfRow.MD_PROP_UID == cfIdWOD)
               {
                   //update the value
                   cfRow.TEXT_VALUE = cfValueWOD;
                   customFieldFound = true;
               }
           }
           //check if the custom field has been found
           if (!customFieldFound)
           {
               //create a new row
               ProjectDataSet.ProjectCustomFieldsRow cfRowWOD =
                   myProject.ProjectCustomFields.NewProjectCustomFieldsRow();
               //Sets all values to NUll to begin
               cfRowWOD.SetDATE_VALUENull();
               cfRowWOD.SetTEXT_VALUENull();
               //General parameters
               cfRowWOD.MD_PROP_UID = cfIdWOD; //custom field ID
               cfRowWOD.CUSTOM_FIELD_UID = Guid.NewGuid();
               cfRowWOD.PROJ_UID = myProjectUid; //current project ID
               //add value
               cfRowWOD.FIELD_TYPE_ENUM = 21;
               cfRowWOD.TEXT_VALUE = Convert.ToString(cfValueWOD); //test value
               //add the row to the data set
               myProject.ProjectCustomFields.AddProjectCustomFieldsRow(cfRowWOD);
           }
           //iterate over fields and update them to the table for WO Status
           foreach (ProjectDataSet.ProjectCustomFieldsRow cfRow in myProject.ProjectCustomFields)
           {
               //if field exists update it
               if (cfRow.MD_PROP_UID == cfIdWG)
               {
                   //update the value
                   cfRow.TEXT_VALUE = cfValueWG;
                   customFieldFound = true;
               }
           }
           //check if the custom field has been found
           if (!customFieldFound)
           {
               //create a new row
               ProjectDataSet.ProjectCustomFieldsRow cfRowWG =
                   myProject.ProjectCustomFields.NewProjectCustomFieldsRow();
               //Sets all values to NUll to begin
               cfRowWG.SetDATE_VALUENull();
               cfRowWG.SetTEXT_VALUENull();
               //General parameters
               cfRowWG.MD_PROP_UID = cfIdWG; //custom field ID
               cfRowWG.CUSTOM_FIELD_UID = Guid.NewGuid();
               cfRowWG.PROJ_UID = myProjectUid; //current project ID
               //add value
               cfRowWG.FIELD_TYPE_ENUM = 21;
               cfRowWG.TEXT_VALUE = Convert.ToString(cfValueWG); //test value
               //add the row to the data set
               myProject.ProjectCustomFields.AddProjectCustomFieldsRow(cfRowWG);
           }
Posted
Comments
bmiller367 29-Apr-14 18:02pm    
Does anyone have any suggestions on how to get this looping correctly to set values to custom fields that either have no initial value or a current value that needs to be over written?

1 solution

For anyone that may wonder how to do this I was able to solve my problem by doing the following and just repeating this section to various fields I need to update:

C#
{
    //indicate the custom field has been found
    bool customFieldFound = false;
    //iterate over fields and update them to the table for Current Proj Mgr
    foreach (ProjectDataSet.ProjectCustomFieldsRow cfRow in myProject.ProjectCustomFields)
    {
        //if field exists update it
        if (cfRow.MD_PROP_UID == cfIdPmID)
        {
            //update the value
            cfRow.TEXT_VALUE = cfValuePmID;
            customFieldFound = true;
        }
    }
    //check if the custom field has been found
    if (!customFieldFound)
    {
        //create a new row
        ProjectDataSet.ProjectCustomFieldsRow cfRowPmID =
            myProject.ProjectCustomFields.NewProjectCustomFieldsRow();
        //Sets all values to NUll to begin
        cfRowPmID.SetDATE_VALUENull();
        cfRowPmID.SetTEXT_VALUENull();
        //General parameters
        cfRowPmID.MD_PROP_UID = cfIdPmID; //custom field ID
        cfRowPmID.CUSTOM_FIELD_UID = Guid.NewGuid();
        cfRowPmID.PROJ_UID = myProjectUid; //current project ID
        //add value
        cfRowPmID.FIELD_TYPE_ENUM = 21;
        cfRowPmID.TEXT_VALUE = Convert.ToString(cfValuePmID);
        //add the row to the data set
        myProject.ProjectCustomFields.AddProjectCustomFieldsRow(cfRowPmID);

    }
}


SQL
I moved the
'bool customFieldFound = false;'
to inside each update/create logic above the
'foreach (ProjectDataSet.ProjectCustomFieldsRow cfRow in myProject.ProjectCustomFields)'
 
Share this answer
 
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900