-
tangmq 数据达人Lv4
发表于2019-8-16 10:04
楼主
本帖最后由 tangmq 于 2019-8-16 11:52 编辑
(该脚本适用于BI42)
一、需求
复制代码
----------------------------------------类似需求------------------
一、需求
系统报表节点,向BI里面传递一个@dep的参数值,然后我们有个dept_code字段来对应,高亮显示[size=13.3333px](注意,脚本考虑场景简单,脚本不一定直接复用,请了解)
二、脚本复制代码
由于滚动有报表滚动条,容器滚动条,报表在容器内部,场景有所不同,脚本也有所不同。此处脚本就不粘贴了,可下载参考表样(内含脚本)
表样.zip
(6.4 KB, 下载次数: )
(该脚本适用于BI42)
一、需求
1、报表传参 @data_id(定位编号,例如12400) ,截取@dataid前3位,去表里面进行定位
2、定位字段是DATA_ID(主题表名不同,任何需要定位的主题表,都含字段,DATA_ID)
3、如果报表有展开,只需要定位当前结果,不需要去层层展开找下级
4、如果报表存在分页,当前也定位不到的,可不做任何处理,也不需要翻页计算去定位
5、滚动定位,给一个高亮颜色。
二、脚本使用说明在报表编辑界面的脚本设置中添加如下客户端脚本:- function scrollPositionAndHighLight(dataid) {
- // debugger;
- var TARGET_COLNAME = "DATA_ID";
- var grid = g_rptpage.getGridById("GRID1");
- //获取所有的tr
- var trList = $(grid.getTabDom()).find("tr");
- var target_col_index = null;
- var colTd = null;
- var flag = false;
- for(var i = 0; i < trList.length; i++) {
- colTd = trList.eq(i);
- for(var k = 0; k < colTd.find("td").length; k++) {
- var target = colTd.find("td").eq(k);
- //找到目标列的列号
- if (target.text() == TARGET_COLNAME ) {
- target_col_index = k;
- flag = true;
- break;
- }
- }
- if(flag) {
- break;
- }
- }
- // 先获取到需要滚动到的那一行的dom
- var targetTR = null;
- // 滚动的像素
- var scollpx = 0;
- for(var j = 0; j < trList.length; j++) {
- targetTR = trList.eq(j);
- scollpx += targetTR.height();
- if(targetTR.find("td").eq(target_col_index).text().substring(0,3) == dataid) {
- targetTR.css({"background-color" : "red"});
- if(grid.scrollContainerV) {
- // 获取滚动条的高度
- var scolllheight = grid.scrollContainerV.scrollHeight;
- // 可视区域的高度
- var viewheight = grid.scrollContainerV.offsetHeight;
- // 实际可滚动的高度
- var actualheight = scolllheight - viewheight;
- // 计算出需要滚动的比例
- var percent = (targetTR.offset().top - $(grid.griddom).offset().top) / scolllheight;
- // 计算出需要滚动的像素,如果小于grid1到顶部的距离就不需要滚动
- if (!(percent * actualheight < $(grid.griddom).offset().top)) {
- grid.scrollContainerV.scrollTop = percent * actualheight;
- }
- } else {
- // 获取滚动条的高度
- var scolllheight = g_rptpage.bodyarea.scrollHeight;
- // 可视区域的高度
- var viewheight = g_rptpage.bodyarea.offsetHeight;
- // 实际可滚动的高度
- var actualheight = scolllheight - viewheight;
- // 计算出需要滚动的比例
- var percent = targetTR.offset().top / scolllheight;
- // 计算出需要滚动的像素
- if (!(percent * actualheight < $(grid.griddom).offset().top)) {
- g_rptpage.bodyarea.scrollTop = percent * actualheight;
- }
- }
- break;
- }
- }
- }
- //获取url中传的参数
- var data_id = getParameter("@data_id",g_rptpage.wnd);
- scrollPositionAndHighLight(data_id);
----------------------------------------类似需求------------------
一、需求
系统报表节点,向BI里面传递一个@dep的参数值,然后我们有个dept_code字段来对应,高亮显示[size=13.3333px](注意,脚本考虑场景简单,脚本不一定直接复用,请了解)
二、脚本
- function scrollPositionAndHighLight(dept_code) {
- var TARGET_COLNAME = "dept_code";
- var grid = g_rptpage.getGridById("GRID1");
- //获取所有的tr
- var trList = $(grid.getTabDom()).find("tr");
- var target_col_index = null;
- var colTd = null;
- var flag = false;
- for(var i = 0; i < trList.length; i++) {
- colTd = trList.eq(i);
- for(var k = 0; k < colTd.find("td").length; k++) {
- var target = colTd.find("td").eq(k);
- //找到目标列的列号
- if (target.text() == TARGET_COLNAME ) {
- target_col_index = k;
- flag = true;
- break;
- }
- }
- if(flag) {
- break;
- }
- }
- // 先获取到需要滚动到的那一行的dom
- var targetTR = null;
- // 滚动的像素
- var scollpx = 0;
- for(var j = 0; j < trList.length; j++) {
- targetTR = trList.eq(j);
- scollpx += targetTR.height();
- if(targetTR.find("td").eq(target_col_index).text() == dept_code) {
- targetTR.css({"background-color" : "red"});
- if(grid.scrollContainerV) {
- // 获取滚动条的高度
- var scolllheight = grid.scrollContainerV.scrollHeight;
- // 可视区域的高度
- var viewheight = grid.scrollContainerV.offsetHeight;
- // 实际可滚动的高度
- var actualheight = scolllheight - viewheight;
- // 计算出需要滚动的比例
- var percent = (targetTR.offset().top - $(grid.griddom).offset().top) / scolllheight;
- // 计算出需要滚动的像素,如果小于grid1到顶部的距离就不需要滚动
- if (!(percent * actualheight < $(grid.griddom).offset().top)) {
- grid.scrollContainerV.scrollTop = percent * actualheight;
- }
- } else {
- // 获取滚动条的高度
- var scolllheight = g_rptpage.bodyarea.scrollHeight;
- // 可视区域的高度
- var viewheight = g_rptpage.bodyarea.offsetHeight;
- // 实际可滚动的高度
- var actualheight = scolllheight - viewheight;
- // 计算出需要滚动的比例
- var percent = targetTR.offset().top / scolllheight;
- // 计算出需要滚动的像素
- if (!(percent * actualheight < $(grid.griddom).offset().top)) {
- g_rptpage.bodyarea.scrollTop = percent * actualheight;
- }
- }
- break;
- }
- }
- }
- //获取url中传的参数
- var dept_code = getParameter("@dep",g_rptpage.wnd);
- scrollPositionAndHighLight(dept_code);
由于滚动有报表滚动条,容器滚动条,报表在容器内部,场景有所不同,脚本也有所不同。此处脚本就不粘贴了,可下载参考表样(内含脚本)