页面树结构
转至元数据结尾
转至元数据起始

该宏示例在 V10.5上 验证通过

提示:本文档的示例代码仅适用于本文档中的示例报表/场景。若实际报表/场景与示例代码无法完全适配(如使用功能不一致,或多个宏代码冲突等),需根据实际需求开发代码。


示例说明

有时候我们在使用参数时,即想要实现多选,但在有些参数值过多的情况下,我们又想要可以实现模糊查询以方便进行快捷查询,输入时用英文逗号隔开

 宏代码实现后效果如下:

设置方法

  1. 创建电子表格报表。
  2. 在浏览器的“分析展现”节点下,选中电子表格,右键选择 编辑宏 进入报表宏界面
  3. 在报表宏界面新建客户端模块。在弹出的新建模块对话框中选择对象为 spreadsheetReport;事件为 onRenderReport;并把下面宏代码复制到代码区域。

宏类型

类型

对象

事件

ClientSide

spreadsheetReport

onRenderReport

宏代码

function main(spreadsheetReport) {
    spreadsheetReport.buildParamsInfo = function(fromButton) {
        if (!this.params) return null;
        var ps = [];
        for (var i = 0; i < this.params.length; i++) {
            if (this.hiddenParamValues && this.hiddenParamValues[this.params[i].id]) continue;
            var value;
            var displayValue;
            if (this.paramPanelObj) {
                value = this.paramPanelObj.getParamValue(this.params[i].id);
                if (value == "") value = this.paramPanelObj.getParamTagByParamId(this.params[i].id).param.value;
                if (value == "") {
                    var noNull = lang.parseJSON(this.params[i].componentDefine).noNull;
                    if (!noNull) {
                        this.refreshing = false;
                        this.showMaskDiv(false);
                        if (fromButton) {
                            alert("${Thereportparametercannotbenull}${Colon}" + (this.params[i].alias || this.params[i].name));
                        }
                        return;
                    }
                }
                displayValue = this.paramPanelObj.getParamDisplayValue(this.params[i].id);
            } else {
                value = this.params[i].value;
                displayValue = this.params[i].displayValue;
            }
            var disValue = value;
            if (value != "" && value != null) {
                var valueArray = value.split(","); //逗号分割
                //处理参数实际的部分
                if (valueArray.length > 1) {
                    value = valueArray[0] + "%' or product_name like";
                    for (var ii = 1; ii < valueArray.length - 1; ii++) {
                        value = value + "'%" + valueArray[ii] + "%' or product_name like";
                    }
                    value = value + "'%" + valueArray[valueArray.length - 1];
                }
            }
            //将所有参数分别放进参数数组中
            ps.push({
                id: this.params[i].id,
                name: this.params[i].name,
                value: value,
                displayValue: displayValue
            });
        }
        if (this.hiddenParamValues) {
            for (var id in this.hiddenParamValues) {
                var v = this.hiddenParamValues[id];
                ps.push({
                    id: id,
                    name: id.substring(id.lastIndexOf('.') + 1),
                    value: v[0],
                    displayValue: v[1]
                });
            }
        }
        return ps;
    };
}
作为多选模糊查询的参数的数据类型要选择“其他类型”,并且在宏代码中,要将下方红色框的字段改成自己使用的参数字段,可在查询SQL中查看对应字段。


资源下载

报表资源:migrate.xml