Thank you, i was already aware of the workaround when i posted the original message. The point i am trying to make is you can not set a fieldvalue when the row is null.
Here is an example with a subtle change, note i have switched the code as you have asked.
Thanks
private void Form1_Load(object sender, EventArgs e)
{
Aspose.Words.Document srcDoc = new Aspose.Words.Document("template.doc");
srcDoc.MailMerge.MergeField += new Aspose.Words.Reporting.MergeFieldEventHandler(MailMerge_MergeField);
srcDoc.MailMerge.ExecuteWithRegions(Table1);
foreach (DataRow row in Table2.Rows)
{
srcDoc.MailMerge.Execute(row);
}
srcDoc.Save(@"out.doc");
}
private void MailMerge_MergeField(object sender, Aspose.Words.Reporting.MergeFieldEventArgs e)
{
if (e.FieldValue == null)
{
e.Text = "Error";
}
}
private DataTable Table1
{
get
{
DataTable dt = new DataTable();
dt.TableName = "Table1";
dt.Columns.Add("Field1");
dt.Columns.Add("Field2");
DataRow dr = dt.NewRow();
dr[0] = "one";
dr[1] = "1";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = "two";
dr[1] = "2";
dt.Rows.Add(dr);
return dt;
}
}
private DataTable Table2
{
get
{
DataTable dt = new DataTable();
dt.TableName = "Table2";
dt.Columns.Add("FullName");
DataRow dr = dt.NewRow();
dr[0] = null; // previously: "John Smith";
dt.Rows.Add(dr);
return dt;
}
}