【发布时间】:2012-09-11 09:25:04
【问题描述】:
我希望允许用户从预定义模板列表中进行选择。选择模板后,RichEditControl (REC) 会显示根据所选模板格式化的文档,其中字段已合并。 (用户永远不会看到合并文档的双括号“代码隐藏”。)我的模板在数据库中作为 varbinary 并作为字节数组传递给 gui 类中的字节数组,剥离后看起来像这样:
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;
合并字段绑定得很好:我可以使用 REC 功能区栏中的“邮件”按钮之一手动插入它们。但是当我尝试以编程方式执行时,文档最终是空白的。我希望它最终成为一个合并的字母,一旦用户选择所需的模板就可以保存。我的理解是,将 ViewMergeData 属性设置为 true,这就是应该发生的事情。
如果有人有任何想法,我将不胜感激。提前致谢。
【问题讨论】:
-
@Kuffs 我使用的代码在上面——我的问题中的第二个代码块。我期待看到将我的模板(由 Template.Document 提供)与由 LetterWriterMergeFieldCollection 类提供的数据合并的结果。
标签: devexpress mailmerge richedit-control