FieldMergingArgs

FieldMergingArgs class

Предоставляет данные дляMergeField событие.

Чтобы узнать больше, посетитеСлияние писем и отчетность документальная статья.

public class FieldMergingArgs : FieldMergingArgsBase

Характеристики

ИмяОписание
Document { get; }ВозвращаетDocumentобъект, для которого выполняется слияние почты.
DocumentFieldName { get; }Получает имя поля слияния, как указано в документе.
Field { get; }Получает объект, представляющий текущее поле слияния.
FieldName { get; }Получает имя поля слияния в источнике данных.
FieldValue { get; set; }Получает или задает значение поля из источника данных.
RecordIndex { get; }Получает индекс записи, которая объединяется, начиная с нуля.
TableName { get; }Получает имя таблицы данных для текущей операции слияния или пустую строку, если имя недоступно.
Text { get; set; }Возвращает или задает текст, который будет вставлен в документ для текущего поля слияния.

Примечания

TheMergeField событие происходит во время слияния почты, когда в документе встречается простое поле слияния почты . Вы можете ответить на это событие, чтобы вернуть текст return для механизма слияния почты, который будет вставлен в документ.

Примеры

Показывает, как выполнить слияние почты с помощью настраиваемого обратного вызова, который обрабатывает данные слияния в форме 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>
/// Если при слиянии почты обнаруживается MERGEFIELD, имя которого начинается с префикса "html_",
/// этот обратный вызов анализирует свои данные слияния как содержимое HTML и добавляет результат в местоположение документа MERGEFIELD.
/// </summary>
private class HandleMergeFieldInsertHtml : IFieldMergingCallback
{
    /// <summary>
    /// Вызывается, когда слияние почты объединяет данные в MERGEFIELD.
    /// </summary>
    void IFieldMergingCallback.FieldMerging(FieldMergingArgs args)
    {
        if (args.DocumentFieldName.StartsWith("html_") && args.Field.GetFieldCode().Contains("\\b"))
        {
            // Добавить проанализированные HTML-данные в тело документа.
            DocumentBuilder builder = new DocumentBuilder(args.Document);
            builder.MoveToMergeField(args.DocumentFieldName);
            builder.InsertHtml((string)args.FieldValue);

            // Поскольку мы уже вставили объединенный контент вручную,
            // нам не нужно будет реагировать на это событие, возвращая содержимое через свойство "Текст".
            args.Text = string.Empty;
        }
    }

    void IFieldMergingCallback.ImageFieldMerging(ImageFieldMergingArgs args)
    {
        // Ничего не делать.
    }
}

Смотрите также