FieldMergingArgs

FieldMergingArgs class

Proporciona datos para elCampo de fusión evento.

Para obtener más información, visite elCombinación de correspondencia e informes Artículo de documentación.

public class FieldMergingArgs : FieldMergingArgsBase

Propiedades

NombreDescripción
Document { get; }Devuelve elDocumentobjeto para el cual se realiza la combinación de correspondencia.
DocumentFieldName { get; }Obtiene el nombre del campo de combinación tal como se especifica en el documento.
Field { get; }Obtiene el objeto que representa el campo de combinación actual.
FieldName { get; }Obtiene el nombre del campo de combinación en la fuente de datos.
FieldValue { get; set; }Obtiene o establece el valor del campo de la fuente de datos.
RecordIndex { get; }Obtiene el índice basado en cero del registro que se está fusionando.
TableName { get; }Obtiene el nombre de la tabla de datos para la operación de combinación actual o una cadena vacía si el nombre no está disponible.
Text { get; set; }Obtiene o establece el texto que se insertará en el documento para el campo de combinación actual.

Observaciones

ElCampo de fusión El evento se produce durante la combinación de correspondencia cuando se encuentra un campo mail merge simple en el documento. Puede responder a este evento para devolver el texto return que el motor de combinación de correspondencia insertará en el documento.

Ejemplos

Muestra cómo ejecutar una combinación de correspondencia con una devolución de llamada personalizada que maneja datos combinados en forma de documentos HTML.

public void MergeHtml()
{
    Document doc = new Document();
    DocumentBuilder builder = new DocumentBuilder(doc);

    builder.InsertField(@"MERGEFIELD  html_Title  \b Content");
    builder.InsertField(@"MERGEFIELD  html_Body  \b Content");

    object[] mergeData =
    {
        "<html>" +
            "<h1>" +
                "<span style=\"color: #0000ff; font-family: Arial;\">Hello World!</span>" +
            "</h1>" +
        "</html>", 

        "<html>" +
            "<blockquote>" +
                "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>" +
            "</blockquote>" +
        "</html>"
    };

    doc.MailMerge.FieldMergingCallback = new HandleMergeFieldInsertHtml();
    doc.MailMerge.Execute(new[] { "html_Title", "html_Body" }, mergeData);

    doc.Save(ArtifactsDir + "MailMergeEvent.MergeHtml.docx");
}

/// <summary>
/// Si la combinación de correspondencia encuentra un MERGEFIELD cuyo nombre comienza con el prefijo "html_",
/// esta devolución de llamada analiza sus datos de combinación como contenido HTML y agrega el resultado a la ubicación del documento MERGEFIELD.
/// </summary>
private class HandleMergeFieldInsertHtml : IFieldMergingCallback
{
    /// <summary>
    /// Se llama cuando una combinación de correspondencia fusiona datos en un MERGEFIELD.
    /// </summary>
    void IFieldMergingCallback.FieldMerging(FieldMergingArgs args)
    {
        if (args.DocumentFieldName.StartsWith("html_") && args.Field.GetFieldCode().Contains("\\b"))
        {
            // Agrega datos HTML analizados al cuerpo del documento.
            DocumentBuilder builder = new DocumentBuilder(args.Document);
            builder.MoveToMergeField(args.DocumentFieldName);
            builder.InsertHtml((string)args.FieldValue);

            // Como ya hemos insertado el contenido fusionado manualmente,
            // no necesitaremos responder a este evento devolviendo contenido a través de la propiedad "Texto".
            args.Text = string.Empty;
        }
    }

    void IFieldMergingCallback.ImageFieldMerging(ImageFieldMergingArgs args)
    {
        //No hacer nada.
    }
}

Ver también