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

示例说明
在含有下拉框参数的灵活分析中,实现"下拉框参数的值可以互斥选择"。

设置方法

  1. 在资源定制中,创建一张灵活分析(带下拉框参数);
  2. 选中灵活分析,右键选择 编辑宏 进入报表宏界面
  3. 在报表宏界面新建客户端模块,在弹出的新建模块对话框中选择对象为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)
  • 无标签