此文档用列表做例,交叉表同理,只需将交叉表234的标题该为文本,并将文本项删除,删除交叉表列标题的类,即可实现相同效果。
功能描述:
1、 根据组织粒度的筛选,选择性展示四个列表中的内容
2、 第一个列表取列标题格式,不展示数据。
实现方案:
1、 取表头和区分数据
四个列表对应的查询主题相同,加过滤器取不同层级的数据,第一个列表过滤器设置1=2,不展示数据,只取表头。
创建页眉,并选中页眉,在上方插入列表行单元格。加入需要行数。
2、 为以下列表隐藏列标题,以便与第一个列表的表头合并。
3、 创建值提示参数
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 条评论
2016-11-28 13:56