大数据量得报表在展示时,会有一段很长的等待时间,这个时间内,如果能有人性化提示,能使项目增色不少.
通过div,控制提示信息的展示。从我的理解来看,提示等待信息分两种情况,第一种,数据集运算时间比较短,页面的数据量比较大,比如大数据量的网格式报表。第二种,数据集运算非常复杂,耗费大量时间,而页面展示的报表很小,比如一个汇总页面。
第一种情况
比方说,在单元格表达式中用to(1,30000),处理方式如下
Div设置层:
<div id='wait_panel' style='Z-INDEX: 12000; LEFT: 0px; 100%; CURSOR: wait; POSITION: absolute; TOP: 0px; HEIGHT: 100%'>
<table '100%' height='100%' id="Table1">
<tr align='center' valign='middle'>
<td >
<table id="Table2" class="loading">
<img src=\'#\'" /loading.gif" /></td>
</tr>
<tr align='center' valign='middle'>
<td>请等待...</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
Js如下:
function ShowWaiting()
{
document.getElementById('wait_panel').style.display = 'none';
}
if (window.onload == null)
{
window.onload = ShowWaiting;
}
通过window的onload来控制层得展示。
第二种情况
数据集计算时间很长,而页面数据很少,可能只有一页。这个时候如果用第一种方案,前端经常会出现很长时间的空白,然后瞬间出现等待提示,最后展示出报表,不符合客户的需求。
此时可以用一个iframe把报表页面引入,在主页面显示等待信息。主页面监视iframe的状态,当发生onload时,隐藏等待信息。
页面如下:
<body>
<div id='wait_panel' style='Z-INDEX: 12000; LEFT: 0px; 100%; CURSOR: wait; POSITION: absolute; TOP: 0px; HEIGHT: 100%'>
<table '100%' height='100%' id="Table1">
<tr align='center' valign='middle'>
<td >
<table id="Table2" class="loading">
<img src=\'#\'" /loading.gif" /></td>
</tr>
<tr align='center' valign='middle'>
<td>请等待...</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<iframe id="rpt_frame" name="rpt_frame" src=\'#\'" frameborder="0" ;100%" height="100%"></iframe>
</body>
<script type="text/javascript">
window.frames['rpt_frame'].onload = function(){
// 隐藏等待窗口
document.getElementById('wait_panel').style.display = 'none';
}
</script>
总结:第一种写法简单,符合情况的话使用效果也比较好。第二种适应特定情况,可以根据具体情况选择使用那一种解决方案。