版本比较
比较
标识
- 该行被添加。
- 该行被删除。
- 格式已经改变。
示例说明
对于支持“多选”的下拉树控件,选择子节点时,如果全部子节点已经勾选,会同时选择父节点,否则不选择父节点;取消子节点的选择时,同时取消父节点的选择。
1)应用范围:灵活分析、电子表格等都可以。
2)事件说明:报表的 onRender 事件。
设置方法
下面以灵活分析为例,介绍设置方法。
1,首先创建一张灵活分析报表(带多选下拉树形控件)。
2、切换到“分析展现”页面,在左侧的资源树上找到对应报表,右键此报表“编辑宏”进入报表宏界面。
3、在报表宏界面 新建客户端模块 ,在弹出的“新建模块”对话框中选择对象为 simpleReport;事件为 onRender;并把下面宏代码复制到代码区域。
宏类型
类型 | 对象 | 事件 |
---|---|---|
ClientSide | simpleReport | onRender |
宏代码
代码块 | ||||
---|---|---|---|---|
| ||||
function main(simpleReport, simpleReportContext) {
//doCheckDescendents开始
function doCheckDescendents(treeNode, checked) {
debugger;
//响应以前的鼠标事件
this.doCheckDescendents(treeNode, checked);
if (checked == 1) {
onClick(treeNode, 1);
} else {
onUnClick(treeNode);
}
}
function onClick(treeNode, checked) {
debugger;
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) {
debugger;
onClick(treeNode, 0);
var tmp = treeNode.parentNode;
while (tmp) {
tmp.setChecked(0);
tmp = tmp.parentNode;
}
}
//doClick开始
function doClick(e) {
debugger;
//响应以前的鼠标事件
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);
}
}
} |
资源下载
下面以电子表格为例,介绍设置方法。
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); } } } |
面板 | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
|