|
从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家合作伙伴紧密合作,产品广泛应用于信息和软件服务、制造、交通运输、建筑、金融、能源、教育、公共管理等支柱产业。
葡萄城热门产品
活字格
融合 AI 技术,敏捷定制适配场景的个性化应用与 AI 智能体
SpreadJS
可嵌入您系统的在线Excel纯前端表格控件
Wyn商业智能
可与企业自有系统深度集成的一站式数据分析工具