FieldMergingArgs

FieldMergingArgs class

Fornisce dati per ilMergeField evento.

Per saperne di più, visita ilUnione di posta e creazione di report articolo di documentazione.

public class FieldMergingArgs : FieldMergingArgsBase

Proprietà

NomeDescrizione
Document { get; }Restituisce ilDocumentoggetto per cui viene eseguita la stampa unione.
DocumentFieldName { get; }Ottiene il nome del campo di unione come specificato nel documento.
Field { get; }Ottiene l’oggetto che rappresenta il campo di unione corrente.
FieldName { get; }Ottiene il nome del campo di unione nell’origine dati.
FieldValue { get; set; }Ottiene o imposta il valore del campo dall’origine dati.
RecordIndex { get; }Ottiene l’indice basato su zero del record che viene unito.
TableName { get; }Ottiene il nome della tabella dati per l’operazione di unione corrente o una stringa vuota se il nome non è disponibile.
Text { get; set; }Ottiene o imposta il testo che verrà inserito nel documento per il campo di unione corrente.

Osservazioni

ILMergeField L’evento si verifica durante la stampa unione quando nel documento viene rilevato un semplice campo “stampa unione “. È possibile rispondere a questo evento per restituire il testo “return " affinché il motore di stampa unione lo inserisca nel documento.

Esempi

Mostra come eseguire una stampa unione con un callback personalizzato che gestisce i dati di unione sotto forma di documenti 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>
/// Se la stampa unione incontra un MERGEFIELD il cui nome inizia con il prefisso "html_",
/// questa callback analizza i dati di unione come contenuto HTML e aggiunge il risultato alla posizione del documento del MERGEFIELD.
/// </summary>
private class HandleMergeFieldInsertHtml : IFieldMergingCallback
{
    /// <summary>
    /// Chiamato quando una stampa unione unisce i dati in un MERGEFIELD.
    /// </summary>
    void IFieldMergingCallback.FieldMerging(FieldMergingArgs args)
    {
        if (args.DocumentFieldName.StartsWith("html_") && args.Field.GetFieldCode().Contains("\\b"))
        {
            // Aggiungere dati HTML analizzati al corpo del documento.
            DocumentBuilder builder = new DocumentBuilder(args.Document);
            builder.MoveToMergeField(args.DocumentFieldName);
            builder.InsertHtml((string)args.FieldValue);

            // Poiché abbiamo già inserito manualmente il contenuto unito,
            // non sarà necessario rispondere a questo evento restituendo contenuto tramite la proprietà "Text".
            args.Text = string.Empty;
        }
    }

    void IFieldMergingCallback.ImageFieldMerging(ImageFieldMergingArgs args)
    {
        // Non fare nulla.
    }
}

Guarda anche