[]
        
(Showing Draft Content)

Create Mail Merge with RichTextBox

The RichText control can contain field place holders that can be replaced with values (merged) at run time. Let's create a mail merge report that uses the RichTextBox control.

When you complete this walkthrough you get a layout that looks similar to the following one.

Mail merge with RTB

Create a Report

  1. In Visual Studio, create a new Windows Forms App (.NET Framework) project and click Next.

  2. In the Configure your new project dialog, type a name for your project, set Framework to .NET Framework 4.7 and click Create.

  3. Select ActiveReports 20 Code-Based Report and click Next.

  4. Enter a Project name, select a Framework and click Create.

  5. Rename SectionReport1.cs and in the Name field, rename the file as OrderLetter.

  6. Double-click OrderLetter.cs to open the report in the Section Report designer.

Bind Report to Data

Connect to a Data Source

  1. On the detail section band, click the Data Source Icon.

    Data Source Icon

  2. In the Report Data Source dialog that appears, select the CSV tab to connect to a CSV data source. Let us connect to MyOrders.csv data available on GitHub. See CSV Provider page for details on binding with CSV data. The connection string for our data is as shown:

    Path=data\\MyOrders.csv;Locale=en-IN;TextQualifier=";ColumnsSeparator=,;RowsSeparator=\r\n;Columns=ID,Product,Customer,OrderNumber,Stock,Total,UnitPrice,City,ProductLine,Discount;HasHeaders=True
  3. Click OK to save the changes and return to the report design surface. The dataset is also automatically added.

Design Report

  1. On the design surface of the report, right-click and select Insert, then Group Header/Footer to add group header and footer sections.

  2. On the design surface, select the grey area outside the report and in the Properties window, set the PrintWidth property to 6.5.

  3. Select the group header and in the Properties window, set the properties as follows.

    Property Name

    Property Value

    DataField

    OrderNumber

    KeepTogether

    True

  4. On the design surface of the report, select the group footer section and in the Properties window, set the following properties.

    Property Name

    Property Value

    KeepTogether

    True

    NewPage

    After

  5. On the design surface of the report, select the pageHeader section and in the Properties panel, set the following properties.

    Property Name

    Property Value

    BackColor

    Coral

  6. From the toolbox, drag the Label control to the pageHeader section and in the Properties panel, set the properties as follows.

    Property Name

    Property Value

    Location

    0, 0 in

    Text

    Company

    Font > Size

    20

    Font > Bold

    True

  7. From the toolbox, drag three TextBox controls to the groupHeader section and in the Properties panel, set the properties as follows.

    Property Name

    Property Value

    TextBox1


    Location

    0.8, 1.8 in

    Text

    Product

    Font > Bold

    True

    TextBox2


    Location

    2.80, 1.8 in

    Text

    Unit Price

    Font > Bold

    True

    TextBox3


    Location

    3.80, 1.8 in

    Text

    Discount

    Font > Bold

    True

  8. In the Report Explorer, expand the Fields node, then the Bound > Document node. Drag the Product field onto the detail section and in the Properties panel, set the following properties:

    Property Name

    Property Value

    Product field


    Location

    0.8, 0 in

    Name

    textProduct1

    UnitPrice field


    Location

    2.8, 0 in

    Name

    txtUnitPrice1

    Discount field


    Location

    3.8, 0 in

    Name

    txtDiscount1

  9. In the Report Explorer, expand the Fields node, then the Bound >Document node. Drag the Total field onto the groupFooter section and in the Properties panel, set the following properties.

    Property Name

    Property Value

    Location

    3.8, 0 in

    Name

    txtTotal

  10. From the toolbox, drag the TextBox control to the groupFooter section and in the Properties panel, set the properties as follows.

| Property Name | Property Value |
| --- | --- |
| Location | 0.8, 0 in |
| Text | Total: |
| Font > Bold | True |
  1. From the tool bar drag two RichTextBox controls to the groupHeader and set the following properties:

| Property Name | Property Value |
| --- | --- |
| **RichTextBox1** |  |
| Location | 0, 0 in |
| AutoReplaceFields | True |
| Name | richTextBox1 |
| **RichTextBox2** |  |
| Location | 0, 0.35 in |
| AutoReplaceFields | True |
| Name | richTextBox2 |

Add fields to the RichText control

  1. Double-click richTextBox1 control box, delete the default text, and add the following text to the richTextBox1 control box:

    OrderOrder ID: #[!OrderNumber],
    
     Hi [!Customer],
    
     Your order with order id #[!OrderNumber] has been shipped. The order will be delivered within 4-5 working days. Thank you for shopping with ACME Store.
    
     Order Detail:
  2. Similarly, add the following text to the richTextBox2 control box:

    Regards,
    John Doe
    (Sales Representative)
  3. Arrange the text and fields within the control as you would in any text editor.

    Note: You can add field to the RichTextBox control by

    1. Double click the control to open the edit mode.

      Insert Fields option in RTB

    2. Right-click and select Insert Field.

    3. Enter the field name and click OK.

Add code to update RichText fields

  1. On the design surface, double click the detail section band.

  2. Double-click in the group header section of the report to create an event-handling method for the group header's Format event.

  3. Add code to the handler to:

    • Replace the OrderNumber field in the RichText control with the current OrderNumber field value.

    • Replace the Customer field with the current Customer field value

      //Use the OrderNumber Field Value
          richTextBox1.ReplaceField("OrderNumber", Fields["OrderNumber"].Value.ToString());
      //Use the Customer Field Value
          richTextBox1.ReplaceField("Customer", Fields["Customer"].Value.ToString());

Improve the appearance of the report and preview.

Mail merge with RTB

  1. Select all the textBoxes in the detail section then, right-click on the text box and go to Format Border and select the 5th preset in the first column to have a border line on top of the textBox as shown in the image below:

    Format Border

  2. Select all the textBoxes in the groupFooter section then, right-click on the text box and go to Format Border and select the 4th preset in the 1st column also, select the 2nd preset in the 1st column to have two border lines on the textbox controls(top and bottom) as shown in the image below:


See Also

Report Authors

RichTextBox