FieldMergingArgs

FieldMergingArgs class

Fournit des données pour leChamp de fusion événement.

Pour en savoir plus, visitez leFusion et publipostage et création de rapports article documentaire.

public class FieldMergingArgs : FieldMergingArgsBase

Propriétés

NomLa description
Document { get; }Renvoie leDocument objet pour lequel le publipostage est effectué.
DocumentFieldName { get; }Obtient le nom du champ de fusion tel que spécifié dans le document.
Field { get; }Obtient l’objet qui représente le champ de fusion actuel.
FieldName { get; }Obtient le nom du champ de fusion dans la source de données.
FieldValue { get; set; }Obtient ou définit la valeur du champ à partir de la source de données.
RecordIndex { get; }Obtient l’index de base zéro de l’enregistrement en cours de fusion.
TableName { get; }Obtient le nom de la table de données pour l’opération de fusion en cours ou une chaîne vide si le nom n’est pas disponible.
Text { get; set; }Obtient ou définit le texte qui sera inséré dans le document pour le champ de fusion actuel.

Remarques

LeChamp de fusion L’événement se produit lors du publipostage lorsqu’un simple champ mail merge est rencontré dans le document. Vous pouvez répondre à cet événement en renvoyant texte pour que le moteur de publipostage l’insère dans le document.

Exemples

Montre comment exécuter un publipostage avec un rappel personnalisé qui gère les données de fusion sous la forme de documents 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 le publipostage rencontre un MERGEFIELD dont le nom commence par le préfixe "html_",
/// ce rappel analyse ses données de fusion en tant que contenu HTML et ajoute le résultat à l'emplacement du document du MERGEFIELD.
/// </summary>
private class HandleMergeFieldInsertHtml : IFieldMergingCallback
{
    /// <summary>
    /// Appelé lorsqu'un publipostage fusionne des données dans un MERGEFIELD.
    /// </summary>
    void IFieldMergingCallback.FieldMerging(FieldMergingArgs args)
    {
        if (args.DocumentFieldName.StartsWith("html_") && args.Field.GetFieldCode().Contains("\\b"))
        {
            // Ajoute des données HTML analysées au corps du document.
            DocumentBuilder builder = new DocumentBuilder(args.Document);
            builder.MoveToMergeField(args.DocumentFieldName);
            builder.InsertHtml((string)args.FieldValue);

            // Puisque nous avons déjà inséré manuellement le contenu fusionné,
             // nous n'aurons pas besoin de répondre à cet événement en renvoyant du contenu via la propriété "Text".
            args.Text = string.Empty;
        }
    }

    void IFieldMergingCallback.ImageFieldMerging(ImageFieldMergingArgs args)
    {
        // Ne fais rien.
    }
}

Voir également