Compartilhar via


ReportingEventReceiver.OnCustomFieldCreated método

Um manipulador de POST-eventos no serviço de dados de relatório para criar um campo personalizado.

Namespace:  Microsoft.Office.Project.Server.Events
Assembly:  Microsoft.Office.Project.Server.Events.Receivers (em Microsoft.Office.Project.Server.Events.Receivers.dll)

Sintaxe

'Declaração
Public Overridable Sub OnCustomFieldCreated ( _
    contextInfo As PSContextInfo, _
    e As ReportingPostCustomFieldCreatedEventArgs _
)
'Uso
Dim instance As ReportingEventReceiver
Dim contextInfo As PSContextInfo
Dim e As ReportingPostCustomFieldCreatedEventArgs

instance.OnCustomFieldCreated(contextInfo, _
    e)
public virtual void OnCustomFieldCreated(
    PSContextInfo contextInfo,
    ReportingPostCustomFieldCreatedEventArgs e
)

Parâmetros

Comentários

O serviço de relatório de dados gera relatórios campo personalizado criado evento quando o banco de dados de relatórios é atualizado com as informações de campo personalizado. O PSI métodos CreateCustomFields e CreateCustomFields2 geram um campo personalizado que criou o evento antes do evento de emissão de relatórios. Esses eventos podem ser muito parecidos em tempo.

ReportingCustomFieldMetadataDataSet fornece metadados necessários para o sistema de relatórios durante a transferência de informações de campo personalizado para o controle ActiveX RDS. O valor do membro CustomFieldTypeUID conjunto de dados também pode ser encontrado no e.CustomFieldTypeGUID de propriedade do argumento.

Os nomes dessas duas entidades incluem a palavra "Tipo", porém esses valores não são associados ao tipo de campo personalizado (custo, data, duração, sinalizador, número ou texto), em vez disso, para o tipo do GUID (campo personalizado).

Para obter mais informações sobre eventos RDS para o banco de dados de relatórios, consulte eventos de RDB.

Exemplos

A seguir está um exemplo de um manipulador de pós-evento campo personalizado criado. O método de OnCustomFieldCreated exemplo recupera informações de parâmetros de evento e grava em um arquivo XML.

using System;
using System.Data;
using System.IO;
using System.Text;
using Microsoft.Office.Project.Server.Events;
using PSLib = Microsoft.Office.Project.Server.Library;
using PSSchema = Microsoft.Office.Project.Server.Schema;

namespace Microsoft.SDK.Project.Samples.ReportingEvents
{
    public class TestCustomFieldCreated : ReportingEventReceiver
    {
        // Change the output directory for your computer.
        private const string OUTPUT_FILES = @"C:\Project\Samples\Output\";
        private static string outFilePath;
        
        public override void OnCustomFieldCreated(PSLib.PSContextInfo 
            contextInfo, ReportingPostCustomFieldCreatedEventArgs e)
        {
            // Record the time of the event.


            DateTime eventRaised = DateTime.Now;
            
            // Create the location for the output file.

            outFilePath = OUTPUT_FILES + "ReportingCustomFieldCreatedTestOutput.txt";
            
            // Write event argument information to the output file.

            string eventData = "\r\n\r\nCustom Field Created post-event handler: " + eventRaised.ToString();
            eventData += "\r\nPWA site Guid: " + contextInfo.SiteGuid.ToString();
            eventData += "\r\nUser name: " + contextInfo.UserName;
            eventData += "\r\nUser Guid: " + contextInfo.UserGuid;
            eventData += "\r\nCustom field type GUID: " + e.CustomFieldTypeGuid.ToString();

            // Include the reporting metadata for the custom field.
            PSSchema.ReportingCustomFieldMetadataDataSet projectDs = e.CustomFieldMetadataDataSet;
            projectDs.WriteXml(outFilePath);

            using (StreamWriter outputData = new StreamWriter(outFilePath, true))
            {
                outputData.WriteLine();
                outputData.WriteLine(eventData);
                outputData.Close();
            }
        }
    }
}

O exemplo a seguir lista o conteúdo do arquivo ReportingCustomFieldCreatedTestOutput.txt que é gravado pelo aplicativo.

Dica

As informações de campo personalizado no exemplo serão específicas para o campo personalizado que é definido em uma instância de Project Web App .

<?xml version="1.0" standalone="yes"?>
<ReportingCustomFieldMetadataDataSet xmlns="https://schemas.microsoft.com/office/project/server/webservices/ReportingCustomFieldMetadataDataSet/">
  <CustomFieldMetadata>
    <CustomFieldTypeUID>1e1dfb97-b4fc-4d8a-aaa8-b1ad079a2013</CustomFieldTypeUID>
    <ParentEntityTypeGuid>cecfe271-6660-4abe-97ed-208d3c71fc18</ParentEntityTypeGuid>
    <CustomFieldName>Test Project Text CF - has LUT</CustomFieldName>
    <CustomFieldType>21</CustomFieldType>
    <LookupTableUID>cdff825e-8951-4ac7-ad0e-ba28a009dd1d</LookupTableUID>
    <IsMultiValueEnabled>false</IsMultiValueEnabled>
    <HasWeights>false</HasWeights>
    <AssignmentRollDown>false</AssignmentRollDown>
    <CreatedDate>2011-03-28T18:45:31.827-07:00</CreatedDate>
    <ModificationDate>2011-03-28T18:45:31.827-07:00</ModificationDate>
  </CustomFieldMetadata>
</ReportingCustomFieldMetadataDataSet>

Custom Field Created post-event handler: 3/28/2011 6:45:40 PM
PWA site GUID: 9f110f4a-3632-42d3-a1e5-21f9c43360c3
User name: DOMAIN\UserName
User GUID: 2e0fdcc1-85fc-4bde-9593-78a2789c66af
Custom field type GUID: 1e1dfb97-b4fc-4d8a-aaa8-b1ad079a2013

Ver também

Referência

ReportingEventReceiver classe

ReportingEventReceiver membros

Microsoft.Office.Project.Server.Events namespace