`

birt集成js、jsp,实现弹出层,局部刷新

阅读更多

             使用birt已有个把月,此处和大家分享一个birt与jsp集成,实现弹出层的小功能。

 

 

 

   1:弹出层js ,引入到FramesetFragment.jsp中

         var LOCK_COUNT_OPEN = 0;
function lockScreenLayer() {
 LOCK_COUNT_OPEN++;
}
function closePopLayer(pop_div_id) {
 //多级弹出层控制
 if(LOCK_COUNT_OPEN<2) {
  document.getElementById("screenlocklayer").style.display="none"; 
 }
 document.getElementById(pop_div_id).style.display="none";
 LOCK_COUNT_OPEN--;
}
/*
 *
 *弹出一个模式窗口:pop_div_id:展示层div 的id;oper_height:控制弹出层距离容器上边缘的高度;
 *oper_width:控制弹出层距离外容器左边缘的距离;div_height:弹出层高度;div_width:弹出层宽度;titleName:
 *弹出层页面title名称;url:iframe src的value
 */
function openSinglePopLayer(pop_div_id,oper_height,oper_width,div_height,div_width,titleName,url) {
 document.getElementById("screenlocklayer").style.display="block";
 var pop_div = document.getElementById(pop_div_id);
 var topvalue = document.documentElement.scrollTop+(document.documentElement.clientHeight-parseInt(oper_height))/2;
 var leftvalue =document.documentElement.scrollLeft+(document.documentElement.clientWidth-parseInt(oper_width))/2;

//控制外围高度
 pop_div.style.top=topvalue;

//控制左边距
 pop_div.style.left=leftvalue;

//控制弹出层的宽度
 pop_div.style.width=div_width;

//控制弹出层的高度,不建议auto
 pop_div.style.height=div_height;

//控制显示
 pop_div.style.display="block";
 var url_path = document.getElementById("url_path").value;

 //页面首次加载刷新iframe,进入action中获取显示数据并返回

 document.frames('info_show').location.href=url_path+url;
}

 

 

2: 弹出层为一个jsp;include到FramesetFragment.jsp中

      <%@ page language="java" pageEncoding="UTF-8"%>
<%
 String path = request.getContextPath();
 String basePath = request.getScheme() + "://"
   + request.getServerName() + ":" + request.getServerPort()
   + path + "/";
%>

<!-- locklayer -->
<div id="screenlocklayer" style="width:2000px; height: 2024px; position: absolute;background-color:#fff;-moz-opacity:0;opacity:.0;filter:Alpha(Opacity=0);display: none; z-index: 1">
</div>
<div id="hiddenStatInfoDiv"
 style="display: none; position: absolute; z-index: 998;padding:0px;">
<input type="hidden" value="<%=basePath%>" id="url_path">
<div class="popup" style="border:solid #ccc 1px;">
<div class="popup-header">
<h2 style="padding-top: 8px;padding-left:6px; color: #0B1746" id="titleMsg"></h2>
<a href="javascript:;" onclick="closePopLayer('hiddenStatInfoDiv')"
 title="Close" class="close-link" style="margin-top: -4px;"> <img
 src="<%=path%>/web/oam/newStyles/images/icon_closewin.gif"
 align="middle" /> </a></div>
<div class="popup-body"  style="margin-top:-10px;">
<table width="100%" height="100%" style="margin:0px;padding:0px;">
 <tr>
  <td colspan="2" align="center" valign="top" style="padding: 0px;">
  <iframe src="" id="info_show" name="info_show" scrolling="no" frameborder="no"
   style="margin:0px; padding:0px; margin: 0px; width: 100%; height:300px;border:1px solid #ccc;"></iframe>
  </td>
 </tr>
 <tr style="border: 1px solid yellow;">
  <td colspan="2" align="center" valign="middle"><a
   href="javascript:;" onclick="closePopLayer('hiddenStatInfoDiv')">
  <span class="btn_blue_ty">关 闭</span> </a></td>
 </tr>
</table>
</div>
</div>
</div>   

 

3:数据展示jsp,锚定到弹出的jsp中的iframe中,这样可以利用iframe实现局部刷新

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://displaytag.sf.net/el" prefix="display"%>
<%
 String path = request.getContextPath();
 String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<base href="<%=basePath%>" target="info_show"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="<%=path %>/web/oam/newStyles/css/jmpopups.css" type="text/css" rel="stylesheet" media="all" />
<link href="<%=path %>/web/oam/newStyles/css/layout.css" type="text/css" rel="stylesheet" media="all" />
<link href="<%=path %>/web/oam/newStyles/css/gb/type.css" type="text/css" rel="stylesheet" media="all" />
<script type="text/javascript" src="<%=request.getContextPath()%>/web/comfile/js/common_displaytagURL.js"></script>
</head>

<style>
  table.colour tr th {
    font-weight:bold;
  }
  
</style>
<body>

<input type="hidden" id="title_msg" value="${title}">
<script>
  parent.document.getElementById("titleMsg").innerHTML=document.getElementById("title_msg").value;
</script>
<table class="colour" cellpadding="0" cellspacing="0">
 <display:table class="colour" style=" width:110%;margin:-5px auto auto -3px;border:solid 1px #ccc;" defaultsort="2"  name="requestScope.dataset" id="pdData" requestURI="/op/SendRespStatAction.do" pagesize="10" size="resultSize" partialList="true">
  <display:column style="width:20% ; text-align:center;" headerClass="align"  title="手机号码">${pdData[0]}</display:column>
  <display:column style="width:20%;text-align:center;" headerClass="align" title="${colName}">${pdData[1]}</display:column>
 </display:table>
</table>
</body>
</html>

4:在birt页面的hiperlink中勾选uri ,target选择self

     点击location后面的fx编写script代码:

    var url = "/op/SendRespStatAction.do?operate=visit_per_count&timeType="+params["timeType"].value+"&startTime="+params["beginTime"].value+"&endTime="+params["endTime"].value+"&nmid="+params["nmid"].value+"&singleTime="+row["XTIMC"] ;
"javascript:openSinglePopLayer('hiddenStatInfoDiv',400,600,'220px','600px','visit_per_count','"+url+"');"

 

 

   该script调用弹出层function,该function的用途在以上代码中有注释标注

 

 

说明:仅是通过贴出代码提供一个简单的参考,希望和大家即时分享、讨论,共同提高。

分享到:
评论
2 楼 zld406504302 2012-04-09  
birt仅是一种数据展示的view,绑定了数据访问api,似的基于数据库的一些操作,通过简单的sql 就可以直接展示到页面。还有就是页面制作更加方便,简单,如果对页面样式要求不高,一般研发就可以搞定,无需ui设计。
    以上两点,我认为是birt目的。用birt做属性菜单,我没有搞过,不过我觉得用birt做不如用html标签去处理,然后嵌入到birt页面中。或者属性菜单和birt页面就完全分离。birt样式控制,还有修改,我自认为不如html标签修改方便
1 楼 xfjt297857539 2012-03-30  
请问birt 可以制作树形菜单吗?

相关推荐

Global site tag (gtag.js) - Google Analytics