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

设置方法
- 在资源定制中,创建一张灵活分析(带下拉树参数);
- 选中灵活分析,右键选择 编辑宏 进入报表宏界面。
- 在报表宏界面新建客户端模块,在弹出的新建模块对话框中选择对象为simpleReport;事件为onRender;并把下面宏代码复制到代码区域。
宏类型
类型 | 对象 | 事件 |
ClientSide | simpleReport | onRender |
宏代码
function main(simpleReport, simpleReportContext) {
//doCheckDescendents开始
function doCheckDescendents(treeNode, checked) {
//响应以前的鼠标事件
this.doCheckDescendents(treeNode, checked);
// 如果点击了'全部',则取消所有儿子节点
if (treeNode.text == "全部") {
if (treeNode.childCount == 0) return;
var tmp = treeNode.firstChild;
while (tmp) {
tmp.setChecked(0);
tmp = tmp.nextSibling;
}
} else { //如果点击了儿子节点,则取消父节点'全部'
treeNode.parentNode.setChecked(0);
}
}
//doClick开始
function doClick(e) {
//响应以前的鼠标事件
this.btnClick();
//绑定onMouseDown事件
var tree = this.dropDownTreePanel.tree;
tree.onCheckNode.subscribe(doCheckDescendents, tree);
}
var paramPanelObjList = simpleReport.paramPanelObj.paramObjList;
for (var i = 0; i < paramPanelObjList.length; i++) {
var item = paramPanelObjList[i];
if (item.bofClassName == "freequery.control.DropDownTree") { //如果是下拉树表控件
//解除以前的点击事件
item.removeListener(item.btn, "click", item.btnClick);
//绑定自点击事件
item.addListener(item.btn, "click", doClick, item);
}
}
}
关键对象总结
- 响应以前的鼠标事件:this.doCheckDescendents(treeNode, checked)
- 绑定onMouseDown事件:tree.onCheckNode.subscribe(doCheckDescendents, tree)
- 解除以前的点击事件:item.removeListener(item.btn, "click", item.btnClick)
- 绑定自点击事件:item.addListener(item.btn, "click", doClick, item)