有时候客户为了尽可能的避免对行数很多的报表出现误读现象,写js来实现一个功能:鼠标的焦点位于该行的时候,改变该行的背景色。但是有时候如果报表分页了之后,发现第二页的行的背景色不仅没有改变,还会报脚本错误。 下面我介绍一个比较通用的js,即在报表分页或者不分页的时候都能改变行的背景色。 Js定义如下: function changeColor(selColor){ var getColor = selColor; var intColor = parseInt(getColor); //设置行背景色 var pn=report1_getCurrPage(); var n=(pn-1)*20; var colLen = document.getElementById("report1").rows[intColor-n-1].cells.length; for(var i=0;i<colLen;i++){ document.getElementById("report1").rows[intColor-n-1].cells[i].style.backgroundColor="pink";
} }
function changeColor1(selColor){ var getColor = selColor; var intColor = parseInt(getColor); var pn=report1_getCurrPage(); var n=(pn-1)*20; //设置行背景色 var colLen = document.getElementById("report1").rows[intColor-1-n].cells.length; for(var i=0;i<colLen;i++){ document.getElementById("report1").rows[intColor-1-n].cells[i].style.backgroundColor="white"; } } 然后定义一张报表,如下图: 然后设置报表“按行分页”,每页20行。 选中A1这一整行,在右边属性栏中找到“HTML事件”,在其表达式中写: "onMouseMove=changeColor("+row()+") onMouseOut=changeColor1("+row()+")" 将行号传给changeColor(selColor)和changeColor1(selColor)。 浏览报表如下图: 第一页: 第二页: 第三页: 随便将鼠标放到一行,则该行的背景色变成粉红色。这样的话就很难看错,出现误读数据的情况了。 注意:不要将HTML事件中的onMouseMove改成onMouseOver,因为报表的单元格在初始化的时候就已经有了一个onmouseover=”report1416542over()”,如果用onMouseOver则会冲突,导致某些行的背景色不能快速灵活的改变,而是要通过反复的改变鼠标焦点才能改变。 这个js方法对于不分页的报表也是有效果的: |