Hi
Thanks for your inquiry. You can rename bookmarks during MailMerge using MergeField event handler. For example see the following code.
public void Test060()
{
//Create DataSourse
DataTable table = new DataTable("myTable");
table.Columns.Add("Field1");
for (int i = 0; i < 10; i++)
{
DataRow row = table.NewRow();
row[0] = "kjsdf;jshd;fkjs";
table.Rows.Add(row);
}
//Open document
Document doc = new Document(@"Test060\in.doc");
//Add MergeField event handler
doc.MailMerge.MergeField += new MergeFieldEventHandler(MailMerge_MergeField_060);
doc.MailMerge.ExecuteWithRegions(table);
doc.Save(@"Test060\out.doc");
}
//Index of bookmark
int bookmarkIndex = 0;
void MailMerge_MergeField_060(object sender, MergeFieldEventArgs e)
{
if (e.FieldName == "field1")
{
//Get parent node of mergefiled
CompositeNode node = e.Field.Start.ParentParagraph;
while (node != null)
{
//Get bookmarkstart collection
NodeCollection starts = node.GetChildNodes(NodeType.BookmarkStart, true);
if (starts.Count > 0)
{
//Rename bookamrks
foreach (BookmarkStart start in starts)
{
start.Bookmark.Name = start.Bookmark.Name + bookmarkIndex.ToString();
bookmarkIndex++;
}
}
if (node.NextSibling.IsComposite)
{
node = (CompositeNode)node.NextSibling;
}
else
{
break;
}
}
}
}
I hope this could help you. Also you can remove content from region using MergeFiled event handler.
Best regards.