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

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

示例说明

对于支持“多选”的下拉树控件,选择子节点时,如果全部子节点已经勾选,会同时选择父节点,否则不选择父节点;取消子节点的选择时,同时取消父节点的选择。

1)应用范围:电子表格等都可以。

2)事件说明:报表的 onRender 事件。

设置方法

下面以电子表格为例,介绍设置方法。

1,首先创建一张电子表格(带多选下拉树形控件)。

2、切换到“定制 -> 宏管理”页面,双击此电子表格进入报表宏界面。

3、在报表宏界面新建客户端模块,在弹出的新建模块对话框中选择对象为spreadsheetReport;事件为onRender;并把下面宏代码复制到代码区域。


宏类型

类型

对象

事件

ClientSide

spreadsheetReport

onRender

宏代码

function main(spreadsheetReport) {
    //doCheckDescendents开始
    function doCheckDescendents(treeNode, checked) {
    //响应以前的鼠标事件
          this.doCheckDescendents(treeNode, checked);
    if (checked == 1) {
          onClick(treeNode, 1);
    }
    else {
       onUnClick(treeNode);
    }
    }
    function onClick(treeNode, checked) {
        var flag = 0;
        if (checked == 1) flag = 1;
		if (treeNode.level != 0) {
		var tmp = treeNode.parentNode;
		while (tmp) {
		//第一层父节点是否要选中。
		var parentChild = tmp.firstChild;
		while (parentChild) {
		if (parentChild.checked != 1) {
			return;
		}
		parentChild = parentChild.nextSibling;
		}
		tmp.setChecked(flag);
		tmp = tmp.parentNode;
		if (tmp.level == -1) {
                    break;
                }
		}
	}
}
	function onUnClick(treeNode) {
		onClick(treeNode, 0);
		var tmp = treeNode.parentNode;
		while (tmp) {
			tmp.setChecked(0);
			tmp = tmp.parentNode;

		}
}
//doClick开始
function doClick(e) {
	//响应以前的鼠标事件
	this.btnClick();
	//绑定onMouseDown事件
	var tree = this.dropDownTreePanel.tree;
		tree.onCheckNode.subscribe(doCheckDescendents, tree);
	}
	var paramPanelObjList = spreadsheetReport.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);
	}
	}
}

资源下载

此资源含有电子表格的示例migrate.xml


  • 无标签