忧伤的酱油
作者忧伤的酱油·2016-08-26 12:01
其它·天庭

多列表的列对齐及多列表的选择性隐藏

字数 7330阅读 1243评论 1赞 0

Clipboard Image.png

此文档用列表做例,交叉表同理,只需将交叉表234的标题该为文本,并将文本项删除,删除交叉表列标题的类,即可实现相同效果。

功能描述:

1、 根据组织粒度的筛选,选择性展示四个列表中的内容

2、 第一个列表取列标题格式,不展示数据。

实现方案:

1、 取表头和区分数据

四个列表对应的查询主题相同,加过滤器取不同层级的数据,第一个列表过滤器设置1=2,不展示数据,只取表头。

eff56260a760ef15f4c7f13809b27a28.png

7435fbf0a64313448430f6b470c5e82c.png

创建页眉,并选中页眉,在上方插入列表行单元格。加入需要行数。

c.png

D0.png

2、 为以下列表隐藏列标题,以便与第一个列表的表头合并。

0d.png

3、 创建值提示参数

96.png

JS代码及功能

<1>----------------------------------------------------

<script type="text/javascript">

//获取第一个列表的TBody标签

var tbody1 = document.getElementById('list1').firstChild.firstChild;

//<取第一个列表的格式,用于赋值给后面的列表>

//获取第二个List的所有TR

var trList2 = document.getElementById('list2').firstChild.firstChild.childNodes;

var trList3 = document.getElementById('list3').firstChild.firstChild.childNodes;

var trList4 = document.getElementById('list4').firstChild.firstChild.childNodes;

//<获取待修改的列表的列属性>

    var form = getFormWarpRequest();

    var p_level =form._oLstChoices_level.value;

       var traget2=document.getElementById('list2');

       var traget3=document.getElementById('list3');

       var traget4=document.getElementById('list4');

//<获取组织维度的值>

if (p_level==0)

//<根据组织维度的粒度,判断展示>

{

                traget2.style.display="";

                traget3.style.display="";  

                traget4.style.display="";

                    var trListLength2 = trList2.length

                    for(var i=0;i<trListLength2;i++){

                             tbody1.appendChild(trList2[0]);

                   }

                    var trListLength3 = trList3.length

                    for(var i=0;i<trListLength3;i++){

                             tbody1.appendChild(trList3[0]);

                   }

                    var trListLength4 = trList4.length

                    for(var i=0;i<trListLength4;i++){

                             tbody1.appendChild(trList4[0]);

                   }

//<由于每次自动提交会加载设置列表列对齐的function,导致列表的隐藏无效,因此只在报表运行的

//时候只加载一次设置列表对齐的function,之后在此处的判断条件中设置对齐>

        }else

if (p_level==2)

{

                traget2.style.display="";

                traget3.style.display="none";

                traget4.style.display="none";

                    var trListLength2 = trList2.length

                    for(var i=0;i<trListLength2;i++){

                             tbody1.appendChild(trList2[0]);

                   }

      }else

if (p_level==3)

{

                traget2.style.display="none";

                traget3.style.display="";

                traget4.style.display="none";

                    var trListLength3 = trList3.length

                    for(var i=0;i<trListLength3;i++){

                             tbody1.appendChild(trList3[0]);

                   }

      }else

{

                traget2.style.display="none";

                traget3.style.display="none";

                traget4.style.display="";

                    var trListLength4 = trList4.length

                    for(var i=0;i<trListLength4;i++){

                             tbody1.appendChild(trList4[0]);

                   }

      }

</script>

<2>------------------------------------------------------------

<script language="JavaScript">

//合并列表的row

window.onload = function (){ 

//<调用window.onload方法在报表运行时只加载一次该方法。>

//获取第一个列表的TBody标签

var tbody1 = document.getElementById('list1').firstChild.firstChild;

//获取第二个List的所有TR

var trList2 = document.getElementById('list2').firstChild.firstChild.childNodes;

var trList3 = document.getElementById('list3').firstChild.firstChild.childNodes;

var trList4 = document.getElementById('list4').firstChild.firstChild.childNodes;

//根据获取TR的个数循环将每次循环的第一个TR添加到 List1的TBody标签下

                    var trListLength2 = trList2.length

                    for(var i=0;i<trListLength2;i++){

                             tbody1.appendChild(trList2[0]);

                   }

                    var trListLength3 = trList3.length

                    for(var i=0;i<trListLength3;i++){

                             tbody1.appendChild(trList3[0]);

                   }

                    var trListLength4 = trList4.length

                    for(var i=0;i<trListLength4;i++){

                             tbody1.appendChild(trList4[0]);

                   }

                  }

</script>

//<此处只加载一次用于默认所有列表都展示时的对齐>

<3>-------------------------------------------------------------

<div id='list1'>

//<给各个列表定义对应的div及id>

<4>-------------------------------------------------------------

</div>

<div id='list2'>

<5>-------------------------------------------------------------------

</div>

<div id='list3'>

<6>---------------------------------------------------------------------

</div>

<div id='list4'>

<7>--------------------------------------------------------------

</div>

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论1 条评论

liangjianliangjian软件开发工程师IBM
2016-11-28 13:56
谢谢分享~
Ctrl+Enter 发表

相关问题

相关资料

X社区推广