示例说明
有时候我们在使用参数时,即想要实现多选,但在有些参数值过多的情况下,我们又想要可以实现模糊查询以方便进行快捷查询,输入时用英文逗号隔开,效果如下图所示:
注:这个示例是使用于一个参数是采取参数模糊查询,其他参数并不是参数模糊查询。
设置方法
- 在资源定制中,创建一张灵活分析(带参数);
- 选中灵活分析,右键选择 编辑宏 进入报表宏界面。
- 在报表宏界面新建客户端模块,在弹出的新建模块对话框中选择对象为simpleReport;事件为onRender;并把下面宏代码复制到代码区域。
宏类型
类型 | 对象 | 事件 |
ClientSide | simpleReport | onRender |
宏代码
function main(simpleReport, simpleReportContext) { var paramPanel = simpleReport.paramPanelObj; //获取参数面板 if (paramPanel) { //修改面板指定参数的点击事件 paramPanel.old_setParamValue = paramPanel.setParamValue; paramPanel.setParamValue = function(paramId, value, alias, clientId, isInner) { if (paramId.indexOf("公司名称参数") >= 0) { var disValue = value; if (value != "" && value != null) { var valueArray = value.split(","); //逗号分割 //处理参数实际的部分 if (valueArray.length > 1) { value = valueArray[0] + "%' or T11.CompanyName like"; for (var i = 1; i < valueArray.length - 1; i++) { value = value + " '%" + valueArray[i] + "%' or T11.CompanyName like "; } value = value + " '%" + valueArray[valueArray.length - 1]; // alert(value); } } paramPanel.old_setParamValue(paramId, value, alias, clientId, isInner); //重新处理一下显示值 var pTag = paramPanel.getParamTagByParamId(paramId); if (pTag) { paramPanel.setParamCtrlValue(pTag, disValue, alias); } } else { this.old_setParamValue(paramId, value, alias, clientId, isInner); } }; } }
注意:作为多选模糊查询的参数的数据类型要选择“其他类型”,并且在宏代码中,要将下方红色框的字段改成自己使用的参数字段。