示例说明
在含有下拉框参数的灵活分析中,实现"下拉框参数的值可以互斥选择"。
设置方法
- 在资源定制中,创建一张灵活分析(带下拉框参数);
- 选中灵活分析,右键选择 编辑宏 进入报表宏界面。
- 在报表宏界面新建客户端模块,在弹出的新建模块对话框中选择对象为simpleReport;事件为onRender;并把下面宏代码复制到代码区域。
宏类型
类型 | 对象 | 事件 |
ClientSide | simpleReport | onRender |
宏代码
function main(simpleReport, simpleReportContext) { //doSelectChange开始 function doSelectChange(e) { //响应以前的鼠标事件 this.doPanelMouseDown(e); if (this.dropdownBox.isVisible() && !this.dropdownBox.pointInPanel(e.target)) return; //得到当前选择的项目 var selectText = ""; var isAll = false; var isOnlyAll = false; if (this.dropdownBox.selectItem) { selectText = this.dropdownBox.selectItem.innerText; isAll = false; //根据参数真实值进行判断,当参数值为"全部"的时候实现互斥 if (selectText == "全部") isAll = true; } for (var i = 0; i < this.dropdownBox.panel.children.length; i++) { var tmpObj = this.dropdownBox.panel.children[i]; if (isAll) { if (tmpObj.lastChild.innerText != "全部") { tmpObj.firstChild.checked = false; tmpObj.children[0].firstChild.checked = false; } } else { if (tmpObj.lastChild.innerText == "全部") { tmpObj.firstChild.checked = false; tmpObj.children[0].firstChild.checked = false; } } } } //doSelectChange结束 var paramPanelObjList = simpleReport.paramPanelObj.paramObjList; for (var i = 0; i < paramPanelObjList.length; i++) { var item = paramPanelObjList[i]; if (item.bofClassName == "freequery.control.ComboBox") { //如果是下拉列表控件 if (!item.dropdownBox.needCheckBox) continue; //绑定onMouseDown事件 item.dropdownBox.onMouseDown.subscribe(doSelectChange, item); } } }
关键对象总结
- 读取参数列表:simpleReport.paramPanelObj.paramObjList
- 读取参数控件的名称:item.bofClassName
- 响应鼠标时间:this.doPanelMouseDown(e)
- 获取当前选择的项目:this.dropdownBox.selectItem.innerText
- 绑定onMouseDown事件:item.dropdownBox.onMouseDown.subscribe(doSelectChange, item)