From 092388cc94a7eedbdaaff0f81d875c0a20cb2929 Mon Sep 17 00:00:00 2001 From: KB Bot Date: Wed, 30 Oct 2024 13:35:26 +0000 Subject: [PATCH 1/5] Added new kb article nested-mailmerge-radwordsprocessing --- .../nested-mailmerge-radwordsprocessing.md | 108 ++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 knowledge-base/nested-mailmerge-radwordsprocessing.md diff --git a/knowledge-base/nested-mailmerge-radwordsprocessing.md b/knowledge-base/nested-mailmerge-radwordsprocessing.md new file mode 100644 index 00000000..739bd134 --- /dev/null +++ b/knowledge-base/nested-mailmerge-radwordsprocessing.md @@ -0,0 +1,108 @@ +--- +title: Performing Nested MailMerge with Multiple Levels in RadWordsProcessing +description: Learn how to implement nested MailMerge operations with multiple levels of data, such as handling lists within lists, in RadWordsProcessing. +type: how-to +page_title: How to Handle Nested MailMerge with Multi-Level Data in RadWordsProcessing +slug: nested-mailmerge-radwordsprocessing +tags: radwordsprocessing, mailmerge, nested, data, list, document processing +res_type: kb +ticketid: 1668943 +--- + +## Environment + +| Version | Product | Author | +| --- | --- | ---- | +| 2024.3.806| RadWordsProcessing |[Desislava Yordanova](https://www.telerik.com/blogs/author/desislava-yordanova)| + +## Description + +When attempting to perform a MailMerge operation with multiple levels of nested data, such as a list within a list (e.g., `Incident` > `Person` > `Phones`), an issue occurs where the nested collection enumerator exhausts prematurely. How can one resolve multi-layer nesting for MailMerge operations in RadWordsProcessing? + +This KB article also answers the following questions: + +- How to perform a nested MailMerge operation in RadWordsProcessing? +- How to use MailMerge with lists within lists in RadWordsProcessing? +- How to avoid premature exhaustion of the nested collection enumerator during MailMerge in RadWordsProcessing? + +## Solution + +To achieve a nested MailMerge operation with multiple levels of data, follow the steps below: + +1. Prepare your data model to reflect the nested structure. In this case, the model includes `Incident`, `Person`, and `Phone` classes. + +2. Use the `MailMerge` method to merge the data with the document template. Ensure your document template has the appropriate merge fields defined for each level of data. + +3. Use special merge fields (`TableStart`, `TableEnd`, `RangeStart`, and `RangeEnd`) to denote the beginning and end of each nested collection. + +Here is an example demonstrating how to set up your data model and perform the nested MailMerge: + +```csharp +// Define your data models +public class Incident +{ + public string ReportNumber { get; set; } + public List People { get; set; } +} + +public class Person +{ + public string FirstName { get; set; } + public string LastName { get; set; } + public List Phones { get; set; } +} + +public class Phone +{ + public string PhoneNumber { get; set; } +} + +// Preparing the data +var mergeData = new List{ + new Incident{ + ReportNumber = "INC-2024-001", + People = new List{ + new Person{ + FirstName = "John", + LastName = "Doe", + Phones = new List{ + new Phone{ PhoneNumber = "310-555-0101" }, + new Phone{ PhoneNumber = "310-555-0102" } + } + }, + // Add more Person instances as needed + } + } +}; + +// Perform the MailMerge operation +RadFlowDocument document = new RadFlowDocument(); +// Assume 'provider' is initialized and points to the appropriate document format provider +var mailMergeResult = document.MailMerge(mergeData); +``` + +In your document template, ensure you have the corresponding merge fields: + +- For the start and end of the `People` list: `TableStart:People` and `TableEnd:People`. +- For the start and end of the `Phones` list within each `Person`: `RangeStart:Phones` and `RangeEnd:Phones`. +- For merging individual property values, use merge fields named after the properties, such as `FirstName`, `LastName`, and `PhoneNumber`. + +### Generating the Necessary Table Structure in the Document + +When dealing with nested collections, it's crucial to dynamically create table structures that can accommodate the varying lengths of these collections. Below is an example showing how to generate a table in the document for `People` and their `Phones`: + +```csharp +private static void GenerateTable(RadFlowDocumentEditor editor) +{ + // Example code to generate a table structure for People and Phones + // This code should be adapted to fit the structure of your document template +} +``` + +By following these steps and utilizing the provided code snippets, you can effectively perform nested MailMerge operations with multiple levels of data in RadWordsProcessing. + +## See Also + +- [Nested MailMerge Documentation](https://docs.telerik.com/devtools/document-processing/libraries/radwordsprocessing/editing/mail-merge#nested-mail-merge) +- [Generating a Word Document with Data Using MailMerge in RadWordsProcessing](https://docs.telerik.com/devtools/document-processing/knowledge-base/generate-doc-template-and-populate-with-collection-data-mail-merge) +- [RadFlowDocument Overview](https://docs.telerik.com/document-processing/libraries/radwordsprocessing/model/radflowdocument) From bef4164f1a7b5d45dc320e9cf093816a3ef7ad30 Mon Sep 17 00:00:00 2001 From: Desislava Yordanova Date: Fri, 1 Nov 2024 18:57:19 +0200 Subject: [PATCH 2/5] add links and images --- .../images/nested-mail-merge-result.png | Bin 0 -> 17574 bytes .../nested-mailmerge-radwordsprocessing.md | 30 ++++++------------ .../radwordsprocessing/editing/mail-merge.md | 1 + 3 files changed, 10 insertions(+), 21 deletions(-) create mode 100644 knowledge-base/images/nested-mail-merge-result.png diff --git a/knowledge-base/images/nested-mail-merge-result.png b/knowledge-base/images/nested-mail-merge-result.png new file mode 100644 index 0000000000000000000000000000000000000000..9f0e5b123bafe51483068ca4cbef8b70f63b6a4a GIT binary patch literal 17574 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 QTSV>TQ6~q|k&6lc0dx `Person` > `Phones`), an issue occurs where the nested collection enumerator exhausts prematurely. How can one resolve multi-layer nesting for MailMerge operations in RadWordsProcessing? - -This KB article also answers the following questions: - -- How to perform a nested MailMerge operation in RadWordsProcessing? -- How to use MailMerge with lists within lists in RadWordsProcessing? -- How to avoid premature exhaustion of the nested collection enumerator during MailMerge in RadWordsProcessing? +Learn how to perform a [MailMerge]({%slug radwordsprocessing-editing-mail-merge%}) operation with multiple levels of nested data, such as a list within a list (e.g., `Incident` > `Person` > `Phones`) in [RadWordsProcessing]({%slug radwordsprocessing-overview%}). ## Solution -To achieve a nested MailMerge operation with multiple levels of data, follow the steps below: +To achieve a nested [MailMerge]({%slug radwordsprocessing-editing-mail-merge%} operation with multiple levels of data, follow the steps below: 1. Prepare your data model to reflect the nested structure. In this case, the model includes `Incident`, `Person`, and `Phone` classes. -2. Use the `MailMerge` method to merge the data with the document template. Ensure your document template has the appropriate merge fields defined for each level of data. +2. Use the [MailMerge]({%slug radwordsprocessing-editing-mail-merge%}) method to merge the data with the document template. Ensure your document template has the appropriate merge fields defined for each level of data. 3. Use special merge fields (`TableStart`, `TableEnd`, `RangeStart`, and `RangeEnd`) to denote the beginning and end of each nested collection. @@ -89,20 +83,14 @@ In your document template, ensure you have the corresponding merge fields: ### Generating the Necessary Table Structure in the Document -When dealing with nested collections, it's crucial to dynamically create table structures that can accommodate the varying lengths of these collections. Below is an example showing how to generate a table in the document for `People` and their `Phones`: - -```csharp -private static void GenerateTable(RadFlowDocumentEditor editor) -{ - // Example code to generate a table structure for People and Phones - // This code should be adapted to fit the structure of your document template -} -``` +When dealing with nested collections, it's crucial to dynamically create table structures that can accommodate the varying lengths of these collections. By following these steps and utilizing the provided code snippets, you can effectively perform nested MailMerge operations with multiple levels of data in RadWordsProcessing. +![Nested mail merge](images/nested-mail-merge-result.png) + ## See Also -- [Nested MailMerge Documentation](https://docs.telerik.com/devtools/document-processing/libraries/radwordsprocessing/editing/mail-merge#nested-mail-merge) -- [Generating a Word Document with Data Using MailMerge in RadWordsProcessing](https://docs.telerik.com/devtools/document-processing/knowledge-base/generate-doc-template-and-populate-with-collection-data-mail-merge) -- [RadFlowDocument Overview](https://docs.telerik.com/document-processing/libraries/radwordsprocessing/model/radflowdocument) +- [MailMerge]({%slug radwordsprocessing-editing-mail-merge%}) +- [Generating a Word Document with Data Using MailMerge in RadWordsProcessing]({%slug generate-doc-template-and-populate-with-collection-data-mail-merge%}) +- [Populate a Table with Data using Nested Mail Merge Functionality]({%slug populate-table-data-mail-merge%}) diff --git a/libraries/radwordsprocessing/editing/mail-merge.md b/libraries/radwordsprocessing/editing/mail-merge.md index cbb0ee1b..08058ed1 100644 --- a/libraries/radwordsprocessing/editing/mail-merge.md +++ b/libraries/radwordsprocessing/editing/mail-merge.md @@ -226,3 +226,4 @@ If you want to separate the items into several rows you need to close the group * [Inserting Images using Mail Merge]({%slug inserting-images-using-mail-merge-radwordsprocessing%}) * [Populate a Table with Data using Nested Mail Merge Functionality]({%slug populate-table-data-mail-merge%}) * [Generating a Word Document Template with Data Using MailMerge in RadWordsProcessing]({%slug generate-doc-template-and-populate-with-collection-data-mail-merge%}) + * [Performing Nested MailMerge with Multiple Levels in RadWordsProcessing]({%slug nested-mailmerge-radwordsprocessing%}) From 82befe1da26ae4e6457c810a3edd695f30d5f15c Mon Sep 17 00:00:00 2001 From: Dess Date: Wed, 20 Nov 2024 17:38:13 +0200 Subject: [PATCH 3/5] Update nested-mailmerge-radwordsprocessing.md --- knowledge-base/nested-mailmerge-radwordsprocessing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/knowledge-base/nested-mailmerge-radwordsprocessing.md b/knowledge-base/nested-mailmerge-radwordsprocessing.md index 799afc72..2e4c7b06 100644 --- a/knowledge-base/nested-mailmerge-radwordsprocessing.md +++ b/knowledge-base/nested-mailmerge-radwordsprocessing.md @@ -4,7 +4,7 @@ description: Learn how to implement nested MailMerge operations with multiple le type: how-to page_title: How to Handle Nested MailMerge with Multi-Level Data in RadWordsProcessing slug: nested-mailmerge-radwordsprocessing -tags: radwordsprocessing, mailmerge, nested, data, list, document processing +tags: wordsprocessing, mailmerge, nested, data, list, document, processing res_type: kb ticketid: 1668943 --- From 1b6ebf433d0ec9f31fd9a3f781a416ccd962cb09 Mon Sep 17 00:00:00 2001 From: Desislava Yordanova Date: Wed, 20 Nov 2024 17:42:26 +0200 Subject: [PATCH 4/5] addressed review's feedback --- .../images/nested-mail-merge-template.png | Bin 0 -> 11635 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 knowledge-base/images/nested-mail-merge-template.png diff --git a/knowledge-base/images/nested-mail-merge-template.png b/knowledge-base/images/nested-mail-merge-template.png new file mode 100644 index 0000000000000000000000000000000000000000..825467a0ca7463b756cf0c64f225a24a1b90c159 GIT binary patch literal 11635 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 dig%xVH2ED~gY@YsFeuGra@pLl Date: Wed, 20 Nov 2024 17:43:27 +0200 Subject: [PATCH 5/5] Update nested-mailmerge-radwordsprocessing.md --- knowledge-base/nested-mailmerge-radwordsprocessing.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/knowledge-base/nested-mailmerge-radwordsprocessing.md b/knowledge-base/nested-mailmerge-radwordsprocessing.md index 799afc72..ec3e667c 100644 --- a/knowledge-base/nested-mailmerge-radwordsprocessing.md +++ b/knowledge-base/nested-mailmerge-radwordsprocessing.md @@ -81,6 +81,8 @@ In your document template, ensure you have the corresponding merge fields: - For the start and end of the `Phones` list within each `Person`: `RangeStart:Phones` and `RangeEnd:Phones`. - For merging individual property values, use merge fields named after the properties, such as `FirstName`, `LastName`, and `PhoneNumber`. +![Nested mail merge template](images/nested-mail-merge-template.png) + ### Generating the Necessary Table Structure in the Document When dealing with nested collections, it's crucial to dynamically create table structures that can accommodate the varying lengths of these collections.