不同sheet,显示不同控件

楼主
我是社区第1156769位番薯,欢迎点我头像关注我哦~

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)

分享扩散:

沙发
发表于 2023-4-7 10:59:06
你好,这个是 fr11 的模板文件吗?
板凳
发表于 2023-4-7 12:01:15
如果是 3个sheet,我是需要在 // 获取sheet顺序
const sheetOrder = { "sheet1": 1, "sheet2": 2 }; 这里调整吗?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部 返回列表