1、背景介绍
现在想实现:不同sheet,显示不同控件。例如sheet1,显示p_control_sheet1控件;sheet2,显示p_control_sheet2控件。
2、解决过程
1. 添加数据集
sheet1_data:SELECT * FROM 销售明细表
sheet2_data:SELECT * FROM 部门
2. 设计报表
sheet1:
注意求和
sheet2:
3. 添加模板参数
p_control_sheet1、p_control_sheet2
4. 添加控件
稍稍设置一下
5. 过滤条件绑定模板参数
sheet1:
sheet2:
======================这时候报表基本完成======================
预览一下吧
sheet1:
sheet2:
======================设置不同sheet,显示不同控件======================
添加一个加载结束的js事件
// 获取sheet顺序
const sheetOrder = { "sheet1": 1, "sheet2": 2 };
// 添加sheet切换事件
$(".fr-sheetbutton-container").click(function () {
// 获取当前sheet名
const sheetName = contentPane.$contentPane.data('TabPane').tabBtns[contentPane.selectedIndex].options.name;
// 获取参数面板
const para = _g().parameterEl.getWidgetByName("PARA");
// 设置控件属性
setControl(sheetName, para);
});
function setControl(sheetName, para) {
// 遍历参数面板下的所有控件
for (let i = 0; i < para.options.items.length; i++) {
// 获取当前控件
const control = para.options.items[i];
const controlObj = _g().parameterEl.getWidgetByName(control.widgetName);
// 当控件类型不为查询,并且控件名不为当前sheet控件时,设置为不可用、不可见
if (control.type != "formsubmit" && control.widgetName.substr(-1) != sheetOrder[sheetName]) {
controlObj.setEnable(false);
controlObj.setVisible(false);
} else {
controlObj.setEnable(true);
controlObj.setVisible(true);
}
}
};
设置除sheet1外的其他控件不可见、不可用
移动重叠在一起
======================预览一下吧======================
======================附件=====================
test_conditionControl.rar (3.26 K) |