打印主从并加序号
场景描述
打印一个主表及其多个从表的数据
打印效果如下图所示
实现思路
不设置主从,通过模板中使用数据循环判断,需要用ejs模版
实现步骤
定义一张主表和两个从表
在页面上添加主表、从表1和从表2数据集组件,清空从表1和从表2的主从选项属性
添加打印组件,设置打印组件的"打印数据"属性为主表数据集,“附加数据”属性选择从表1和从表2
打印模版的文件后缀为.print.ejs
打印模板文件内容如下
<html>
<head>
<title>my ejs template</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<table style="width:100%;" cellpadding="2" cellspacing="0" border="1" bordercolor="#000000">
<tbody>
<% for(var i=0;i<data.length ; i ++){ %>
<tr>
<td style="text-align:center;">
序号
</td>
<td>
<span><%= i+1%></span>
</td>
</tr>
<tr>
<td style="text-align:center;">
编码
</td>
<td>
<%= data[i].fno%>
</td>
</tr>
<tr>
<td style="text-align:center;">
日期
</td>
<td >
<span><%= data[i].fdate%></span>
</td>
</tr>
<tr>
<td style="text-align:center;">
从表一
</td>
<td style="text-align:center;">
<table style="width:100%;" cellpadding="2" cellspacing="0">
<tbody>
<tr>
<td style="border-right:#000000 solid 1px;" width="100px">
序号
</td>
<td style="border-right:#000000 solid 1px;" width="300px">
名称
</td>
<td>
单价
</td>
</tr>
<% var data1 = context.datas.restData1 %>
<% var k=0 %>
<% for(var j=0;j<data1.length;j++){ %>
<%if(data1[j].zhubiao == data[i].fid){%>
<tr>
<td style="border-top:#000000 solid 1px;border-right:#000000 solid 1px;">
<span><%= ++k %></span>
</td>
<td style="border-top:#000000 solid 1px;border-right:#000000 solid 1px;">
<span><%= data1[j].fname%></span>
</td>
<td style="border-top:#000000 solid 1px;">
<span><%= data1[j].fprice%></span>
</td>
</tr>
<%}%>
<%}%>
</tbody>
</table>
</td>
</tr>
<tr>
<td style="text-align:center;">
从表二
</td>
<td style="text-align:center;">
<table style="width:100%;" cellpadding="2" cellspacing="0">
<tbody>
<tr>
<td style="border-right:#000000 solid 1px;" width="100px">
序号
</td>
<td style="border-right:#000000 solid 1px;" width="300px">
数量
</td>
<td>
金额
</td>
</tr>
<% var data2 = context.datas.restData2 %>
<% var k =0 %>
<% for(var j=0;j<data2.length;j++){ %>
<%if(data2[j].zhubiao == data[i].fid){%>
<tr>
<td style="border-top:#000000 solid 1px;border-right:#000000 solid 1px;">
<span><%= ++k %></span>
</td>
<td style="border-top:#000000 solid 1px;border-right:#000000 solid 1px;">
<span><%= data2[j].fnum%></span>
</td>
<td style="border-top:#000000 solid 1px;">
<span><%= data2[j].fmoney%></span>
</td>
</tr>
<%}%>
<%}%>
</tbody>
</table>
</td>
</tr>
<% } %>
</tbody>
</table>
</body>
</html>
打印模板说明
<% var data1 = context.datas.restData1 %>是访问附加数据的写法,restData1是附加数据的xid或id
<% for(var j=0;j<data1.length;j++){ %>
<%if(data1[j].zhubiao == data[i].fid){%>
比较主键和外键是否相等。zhubiao是从表的外键列,见上面的数据结构定义。fid表示主表的主键
- 使用此模板,分别加载主表和从表的数据,为保证加载完整,注意将从表的分页大小设置为-1