PublishedProject.FieldValues - Propriété

Obtient les valeurs de champ personnalisé pour le projet publié.

Espace de noms :  Microsoft.ProjectServer.Client
Assembly :  Microsoft.ProjectServer.Client (dans Microsoft.ProjectServer.Client.dll)

Syntaxe

'Déclaration
Public ReadOnly Property FieldValues As Dictionary(Of String, Object)
    Get
'Utilisation
Dim instance As PublishedProject
Dim value As Dictionary(Of String, Object)

value = instance.FieldValues
public Dictionary<string, Object> FieldValues { get; }

Valeur de propriété

Type : System.Collections.Generic.Dictionary<String, Object>
Un jeu de paires clé-valeur pour les valeurs de champ personnalisé, où la clé est le nom interne de champ personnalisé, et la valeur est la valeur du champ personnalisé ou le nom interne d'une entrée de table de recherche.

Exemples

L'exemple suivant interroge chaque projet d'entreprise publié pour sa collection de champs personnalisés. Il répertorie le GUID et nom du projet, le nom et la valeur de chaque champ personnalisé et le nom interne de chaque champ personnalisé dans le projet comme clé dans une paire clé-valeur. Si le champ personnalisé utilise une table de choix, l'élément FieldValues contient le nom interne de l'entrée de table de recherche. Si le champ personnalisé est un champ à plusieurs valeurs de texte, l'exemple répertorie la valeur et le nom interne de chaque entrée de table de choix pour ce champ personnalisé dans le projet. Si le champ personnalisé n'utilise pas une table de recherche, la valeur est simplement la valeur du champ personnalisé.

Le nom interne d'un champ personnalisé est une chaîne avec la valeur « Custom_ [GUID]", par exemple, Custom_9d77d62aa92e4d40adc8446c90eb7456. Le nom interne d'une entrée de table de recherche est une chaîne avec la valeur « Entry_ [GUID]", par exemple, Entry_4a2750309d91e21193f90021704e28a0.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.ProjectServer.Client;

namespace GetProjectFieldValues
{
    class Program
    {
        private const string pwaPath = "https://ServerName/pwa";    // Change the path for Project Web App.

        // Set the Project Server client context.
        private static ProjectContext projContext;

        static void Main(string[] args)
        {
            projContext = new ProjectContext(pwaPath);

            // Get the list of published projects in Project Web App.
            projContext.Load(projContext.Projects);
            projContext.ExecuteQuery();

            Console.WriteLine("\t\tProject ID\t     :\tProject name");

            if (projContext.Projects.Count > 0)
            {
                for (int i = 0; i < projContext.Projects.Count; i++)
                {
                    var pubProj = projContext.Projects[i].IncludeCustomFields;
                    projContext.Load(pubProj);
                    projContext.Load(pubProj.CustomFields);
                    projContext.ExecuteQuery();

                    Console.WriteLine("\n{0} :\t{1}", pubProj.Id.ToString(), pubProj.Name);
                    int numCFs = pubProj.CustomFields.Count;
                    Console.WriteLine("Number of custom fields: {0}", numCFs.ToString());

                    Dictionary<string, object> projDict = pubProj.FieldValues;

                    // Variables to compare with custom field types:
                    string textValue = "";                  // TEXT - no lookup table
                    String[] lutTextValues = { "" };        // TEXT - lookup table
                    DateTime dateValue = DateTime.MinValue; // DATE - no lookup table

                    foreach (KeyValuePair<string, object> kvp in projDict)
                    {
                        object oVal = kvp.Value;
                        string keyStr = kvp.Key;

                        var projCFs = projContext.LoadQuery(pubProj.CustomFields
                            .Where(cf => cf.InternalName == keyStr));
                        projContext.ExecuteQuery();

                        Console.WriteLine("\n    Custom field: '{0}'; FieldType = {1};\n\tInternalName = {2}",
                            projCFs.First().Name, projCFs.First().FieldType.ToString(), keyStr);

                        // Check whether the custom field is a simple text field.
                        if (object.ReferenceEquals(oVal.GetType(), textValue.GetType()))
                        {
                            textValue = (string)oVal;
                            Console.WriteLine("\tSingle-line string value = {0}", textValue.ToString());
                        }
                        // Check whether the custom field is a text (or multivalue text) field from a lookup table.
                        else if (object.ReferenceEquals(oVal.GetType(), lutTextValues.GetType()))
                        {
                            projContext.Load(projCFs.First().LookupTable);
                            projContext.ExecuteQuery();
                            string lutName = projCFs.First().LookupTable.Name;

                            Console.WriteLine("\tLookup table: {0}", lutName);

                            var luts = projContext.LoadQuery(projContext.LookupTables
                                .Where(lut => lut.Name == lutName));
                            projContext.ExecuteQuery();

                            lutTextValues = (string[])oVal;

                            for (var j = 0; j < lutTextValues.Count(); j++)
                            {
                                var entries = projContext.LoadQuery(luts.First().Entries
                                    .Where(e => e.InternalName == lutTextValues[j]));
                                projContext.ExecuteQuery();
                                Console.WriteLine("\t    Entry({0}): String value = {1};\n\t\t  InternalName = {2}",
                                    j, entries.First().FullValue, lutTextValues[j]);
                            }
                        }
                        // Check whether the custom field is a date.
                        else if (object.ReferenceEquals(oVal.GetType(), dateValue.GetType()))
                        {
                            dateValue = (DateTime)oVal;

                            Console.WriteLine("\tDate value = {0}", dateValue.ToString());
                        }
                        // Add other cases for cost, duration, flag, and number custom fields,
                        // with and without lookup tables.
                    }
                }
            }
            Console.Write("\nPress any key to exit: ");
            Console.ReadKey(false);
        }
    }
}

Par exemple, un projet nommé TestProject9 a une valeur de champ personnalisé services du projet, un champ personnalisé de texte à valeurs multiples avec les trois valeurs d'entrée de table de recherche, un champ personnalisé de texte simple et un champ personnalisé de date. Étant donné que les services du projet est un champ personnalisé intégré, le GUID pour le champ personnalisé de services du projet par défaut des instances de Project Web App est 9d77d62a-a92e-4d40-adc8-446c90eb7456. Voici la sortie de l'exemple d'application GetProjectFieldValues :

b846e947-29e0-43eb-b5c6-5ddeaf08d5c0 :  TestProject9
Number of custom fields: 4

    Custom field: 'Project Departments'; FieldType = TEXT;
        InternalName = Custom_9d77d62aa92e4d40adc8446c90eb7456
        Lookup table: Department
            Entry(0): String value = Test Dept 1;
                  InternalName = Entry_bbc07ff5b06de21193f40021704e28a0

    Custom field: 'ProjectMVText'; FieldType = TEXT;
        InternalName = Custom_9295a8759d91e21193f90021704e28a0
        Lookup table: TestTextMV
            Entry(0): String value = First.001;
                  InternalName = Entry_4a2750309d91e21193f90021704e28a0
            Entry(1): String value = Second.002;
                  InternalName = Entry_4d2750309d91e21193f90021704e28a0
            Entry(2): String value = Third;
                  InternalName = Entry_4f2750309d91e21193f90021704e28a0

    Custom field: 'Test Project Date'; FieldType = DATE;
        InternalName = Custom_37f61601a991e21193f90021704e28a0
        Date value = 3/29/2013 8:00:00 AM

    Custom field: 'Test project simple text'; FieldType = TEXT;
        InternalName = Custom_8bf7eed5cc94e21193f90021704e28a0
        Single-line string value = This is a line of text

Voir aussi

Référence

PublishedProject classe

PublishedProject - Membres

Microsoft.ProjectServer.Client - Espace de noms