Compartilhar via


PublishedProject.FieldValues propriedade

Obtém os valores de campo personalizado para o projeto publicado.

Namespace:  Microsoft.ProjectServer.Client
Assembly:  Microsoft.ProjectServer.Client (em Microsoft.ProjectServer.Client.dll)

Sintaxe

'Declaração
Public ReadOnly Property FieldValues As Dictionary(Of String, Object)
    Get
'Uso
Dim instance As PublishedProject
Dim value As Dictionary(Of String, Object)

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

Valor de propriedade

Tipo: System.Collections.Generic.Dictionary<String, Object>
Um conjunto de pares de chave-valor para valores do campo personalizado, onde a chave é o nome do campo personalizado interno, e o valor é o valor do campo personalizado ou o nome interno de uma entrada de tabela de pesquisa.

Exemplos

O exemplo de código a seguir consulta cada projeto de empresa publicado para sua coleção de campos personalizados. Ela lista o GUID e nome do projeto, o nome e o valor de cada campo personalizado e o nome de cada campo personalizado do projeto interno como a chave em um par chave-valor. Se o campo personalizado usa uma tabela de pesquisa, o item de FieldValues contém o nome interno da entrada de tabela de pesquisa. Se o campo personalizado é um campo de múltiplos valores de texto, o exemplo lista o valor e o nome interno de cada entrada da tabela de pesquisa para o campo personalizado do projeto. Se o campo personalizado não usar uma tabela de pesquisa, o valor é simplesmente o valor do campo personalizado.

O nome interno de um campo personalizado é uma seqüência de caracteres com o valor "Custom_ [GUID]", por exemplo, Custom_9d77d62aa92e4d40adc8446c90eb7456. O nome interno de uma entrada de tabela de pesquisa é uma seqüência de caracteres com o valor "Entry_ [GUID]", por exemplo, 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);
        }
    }
}

Por exemplo, um projeto chamado TestProject9 tem um valor de campo personalizado de departamentos de projeto, um campo personalizado de múltiplos valores de texto com três valores de entrada de tabela de pesquisa, um campo personalizado de texto simples e um campo de data personalizado. Como os departamentos do projeto é um campo personalizado interno, o GUID para o campo personalizado do projeto departamentos em default instâncias de Project Web App é 9d77d62a-a92e-4d40-adc8-446c90eb7456. A seguir está a saída do aplicativo de exemplo 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

Ver também

Referência

PublishedProject classe

PublishedProject membros

Microsoft.ProjectServer.Client namespace