Hello Rieni De Rijke,
You can use custom merge fields to achieve such behaviour, as demonstrated in the attached project:
public
class
CustomMergeField : MergeField
{
private
const
string
CustomFieldName =
"CustomField"
;
static
CustomMergeField()
{
CodeBasedFieldFactory.RegisterFieldType(CustomMergeField.CustomFieldName, () => {
return
new
CustomMergeField(); });
}
public
override
string
FieldTypeName
{
get
{
return
CustomMergeField.CustomFieldName;
}
}
public
override
Field CreateInstance()
{
return
new
CustomMergeField();
}
protected
override
DocumentFragment GetResultFragment()
{
Customer customer =
this
.Document.MailMergeDataSource.CurrentItem
as
Customer;
if
(customer ==
null
)
{
return
null
;
}
if
(
this
.PropertyPath ==
"Orders"
)
{
Table table =
new
Table();
foreach
(Order order
in
customer.Orders)
{
Span span =
new
Span(order.ProductName);
Paragraph paragraph =
new
Paragraph();
paragraph.Inlines.Add(span);
TableCell cell =
new
TableCell();
cell.Blocks.Add(paragraph);
TableRow row =
new
TableRow();
row.Cells.Add(cell);
table.AddRow(row);
}
Section section =
new
Section();
section.Blocks.Add(table);
RadDocument document =
new
RadDocument();
document.Sections.Add(section);
document.MeasureAndArrangeInDefaultSize();
return
new
DocumentFragment(document);
}
return
null
;
}
Don't hesitate to contact us if you have other questions.
Greetings,
Boby
the Telerik team
Explore the entire Telerik portfolio by downloading the Ultimate Collection trial package. Get it now >>