题目

题目要求

模板要求

处理数据集

数据集为
- 控件数据集-分公司名称
- 主表数据集-Equipment
- 附表数据集-EquipmentDetail

分公司名称

用于查询控件数据字典

1
2
3
SELECT e.Company
FROM Equipment e
WHERE 1 = 1

Equipment

用于表主体展示数据,同时由分公司参数控制

1
2
3
4
SELECT e.*
FROM Equipment e
WHERE 1 = 1
${if(len(com_comp_name)==0,"","and e.Company = '"+com_comp_name+"'")}

EquipmentDetail

用于表子表展示数据,同时由分公司参数控制,按照ID排序

1
2
3
4
5
6
SELECT ed.*
FROM EquipmentDetail ed,Equipment e
WHERE 1 = 1
AND ed.CompanyID = e.CompanyID
${if(len(com_comp_name)==0,"","and e.Company = '"+com_comp_name+"'")}
ORDER BY CAST(ed.EquipmentID AS INTEGER)

查询控件

分公司查询框为下拉框控件,数据字典为分公司名字数据集,控件名称为com_comp_name

主表设计

按照题目效果格式设置报表样式,效果如下:

为每一个需要填报的单元格设置好对应的文本、数字或者按钮控件,并放入对应的数据集查询结果字段。

设置第8行子表隔行显示。

增加按钮为插入行按钮,指定单元格为A8

删除按钮为按钮控件,基本设置如下图:

同时设置点击事件-javascript脚本,代码如下:

1
2
3
4
5
6
7
8
9
10
11
var cell = this.options.location;
//获取当前控件所在单元格的编号
FR.Msg.confirm("警告", "确定要删除吗?", function(value) {
if (value) {
_g().deleteReportRC(cell);
//删除当前行
_g().verifyAndWriteReport();
//校验并提交
}
})
_g().refreshAllSheets()

模板设置

填报属性设置

主表数据修改,其中J3,为隐藏单元格CompanyID,仅用于填报提交。配置如下图:

子表数据修改

填报页面设置

为填报页面添加一个加载结束事件,来增加删除按钮,最后一行不可删除的功能。
事件代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
var arr = ['del'];
//定义需要执行事件的删除行按钮名称数组,如有多组则写法为['sc1','sc2']
for (i = 0; i < arr.length; i++) {
var kj = $('[widgetname="' + arr[i].toUpperCase() + '"]:visible');
//获取页面上可见的删除行按钮元素
var del = _g().getWidgetsByName(arr[i].toUpperCase());
//根据名字获取删除行按钮
for (j = 0; j < del.length; j++) {
kj.length <= 1 ? del[j].setEnable(false) : del[j].setEnable(true);
//当控件只剩1个时,禁用控件,否则遍历启用所有控件
}
}

成果预览