从TX Text Control .NET Server 16.0开始,通过MailMerge类可以实现级联数据的合并操作,TX文档将级联模块组织成一种递归的树形结构,并通过关系数据对TX文档中的合并域进行数据合并。
我们就以生成所有员工的病假时间和休假时间报表为例,来讲解级联数据报表的实现方法。我们创建的文档模板中包含固定信息、每个员工的动态信息以及每个员工相关的病假和休假时间信息。 1、固定信息:标题Accruals Report、页号Page n 2、动态信息:公司名称Softerware Consultants,LLC、日期Date 3、每个员工的基本信息:员工编号Employee number、员工名字Employee name 4、每个员工的请假信息:Date、Type、Action、Note、Hours、Balance 通过上面的各种信息创建出下面所示的文档模板: 使用TX Test Control .NET Server 版本中的MailMerge组件,会让数据合并过程变得非常容易,你不必遍历所有的标记文本域,也不必关心重复显示区域。整个合并过程(包括级联区域的合并)都是自动完成的,下面的代码是在使用MailMerge组件时需要进行的一些设置: mailMerge1.LoadTemplateFromMemory(data, TXTextControl.DocumentServer.FileFormat.InternalUnicodeFormat); // load the XML file DataSet ds = new DataSet(); ds.ReadXml(tbDatabaseFile.Tag.ToString(), XmlReadMode.Auto); // add the relations for the nested blocks DataRelation relation_sick = new DataRelation("sick", ds.Tables["employee"].Columns["dyn_employee_number"], ds.Tables["sick"].Columns["dyn_employee_number"]); DataRelation relation_vacation = new DataRelation("vacation", ds.Tables["employee"].Columns["dyn_employee_number"], ds.Tables["vacation"].Columns["dyn_employee_number"]); ds.Relations.Add(relation_vacation); ds.Relations.Add(relation_sick); // pass the data mailMerge1.MergeBlocks(ds); mailMerge1.Merge(ds.Tables["general"], true); 复制代码我们使用的数据源包含下面4个数据表,其中绿色标记的列是数据源中用于建立表之间关系的列,MailMerge类会自动解析这种树形结构,并正确的合并到相应的标记文本域中: (384.75 K, 下载次数:16) |
|
|
关于葡萄城
葡萄城是专业的软件开发技术和低代码平台提供商,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务,一站式满足开发者需求,帮助企业提升开发效率并创新开发模式。葡萄城开发技术始于1980年,40余年来始终聚焦软件开发技术,有深厚的技术积累和丰富的产品线。是业界能够同时赋能软件开发和低代码开发的企业。凭借过硬的产品能力、活跃的用户社区和丰富的伙伴生态,与超过3000家合作伙伴紧密合作,产品广泛应用于信息和软件服务、制造、交通运输、建筑、金融、能源、教育、公共管理等支柱产业。
葡萄城热门产品
活字格
打通现有软件,快速定制面向未来的个性化应用

SpreadJS
可嵌入您系统的在线Excel的纯前端表格控件

Wyn商业智能
可与企业自有系统深度集成,增强数据分析的 BI 工具
