我想让用户从预定义的模板列表中进行选择。选择模板后,RichEditControl(REC)将显示根据所选模板格式化的文档,其中已经合并了字段。 (用户从来不会看到合并文档的双括号“代码隐藏”。)我的模板以varbinary形式存在数据库中,并作为类中的字节数组传递给gui,拆分后的形式如下所示:如何以编程方式合并DevExpress RichEditControl中的数据?
public class Template
{
public byte[] Document {get;set;}
}
在包含REC形式,我打电话了包含可用模板的下拉列表的改变事件的事件处理下列方法(letterWriterEditor是我的REC,和templateBindingSource是绑定到LetterWriterMergeFieldCollection,一个包含字符串属性的类,该字段代表我希望在文档中合并的字段以及它们的值(该程序中的其他位置确定)):
public void MergeTemplateFieldsWithValues(IList<LetterWriterMergeFieldCollection> mergeValues, Template template)
{
using (Stream s = new MemoryStream(template.Document))
{
letterWriterEditor.LoadDocument(s, DocumentFormat.Rtf);
}
BindingList<LetterWriterMergeFieldCollection> bindingList = new BindingList<LetterWriterMergeFieldCollection>(mergeValues);
templateBindingSource.DataSource = bindingList;
templateBindingSource.ResetBindings(false);
}
我有这种形式的构造函数声明如下:
letterWriterEditor.Options.MailMerge.ViewMergedData = true;
字段绑定精细合并:我可以用在拍摄的功能条的邮件按钮之一,手动插入。但是当我尝试以编程的方式完成这个文档时,这个文档就变成了空白。当用户选择所需的模板时,我希望它最终成为一个合并的信件,随时可以保存。我的理解是,将ViewMergeData属性设置为true,这就是应该发生的事情。
如果有人有任何想法,我会很感激。提前致谢。
@Kuffs我使用的代码是以上 - 我的问题中的第二个代码块。我期待看到将我的模板(由Template.Document提供)与由LetterWriterMergeFieldCollection类提供的数据合并的结果。 – RobC