FieldMergingArgs

FieldMergingArgs class

için veri sağlar Birleştirme Alanı olay.

public class FieldMergingArgs : FieldMergingArgsBase

Özellikleri

İsim Tanım
Document { get; } Document adres mektup birleştirmenin gerçekleştirildiği nesne.
DocumentFieldName { get; } Belgede belirtildiği gibi birleştirme alanının adını alır.
Field { get; } Geçerli birleştirme alanını temsil eden nesneyi alır.
FieldName { get; } Veri kaynağındaki birleştirme alanının adını alır.
FieldValue { get; set; } Veri kaynağından alanın değerini alır veya ayarlar.
RecordIndex { get; } Birleştirilmekte olan kaydın sıfır tabanlı dizinini alır.
TableName { get; } Geçerli birleştirme işlemi için veri tablosunun adını veya ad yoksa boş dize adını alır.
Text { get; set; } Geçerli birleştirme alanı için belgeye eklenecek metni alır veya ayarlar.

Notlar

bu Birleştirme Alanı olay, adres mektup birleştirme sırasında belgede basit bir adres mektup birleştirme alanıyla karşılaşıldığında oluşur. Adres mektup birleştirme motorunun belgeye eklemesi için bu olaya return metnini yanıtlayabilirsiniz.

Örnekler

Birleştirme verilerini HTML belgeleri biçiminde işleyen özel bir geri aramayla adres mektup birleştirmenin nasıl yürütüleceğini gösterir.

{
    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>
/// Adres mektup birleştirme, adı "html_" öneki ile başlayan bir MERGEFIELD ile karşılaşırsa,
/// bu geri arama, birleştirme verilerini HTML içeriği olarak ayrıştırır ve sonucu MERGEFIELD'in belge konumuna ekler.
/// </summary>
private class HandleMergeFieldInsertHtml : IFieldMergingCallback
{
    /// <summary>
    /// Adres mektup birleştirme verileri bir MERGEFIELD ile birleştirdiğinde çağrılır.
    /// </summary>
    void IFieldMergingCallback.FieldMerging(FieldMergingArgs args)
    {
        if (args.DocumentFieldName.StartsWith("html_") && args.Field.GetFieldCode().Contains("\\b"))
        {
            // Ayrıştırılmış HTML verilerini belgenin gövdesine ekleyin.
            DocumentBuilder builder = new DocumentBuilder(args.Document);
            builder.MoveToMergeField(args.DocumentFieldName);
            builder.InsertHtml((string)args.FieldValue);

            // Birleştirilmiş içeriği zaten manuel olarak eklediğimiz için,
             // "Metin" özelliği aracılığıyla içerik döndürerek bu olaya yanıt vermemiz gerekmeyecek.
            args.Text = string.Empty;
        }
    }

    void IFieldMergingCallback.ImageFieldMerging(ImageFieldMergingArgs args)
    {
        // Hiçbir şey yapma.
    }
}

Ayrıca bakınız