报表开发总结(1)
来源:互联网 发布:玄武指弹吉他教室知乎 编辑:程序博客网 时间:2024/05/29 19:43
总结一下这四天做的两张报表,对于里面我新接触的和自己感觉重要的东西都会写出来。
前端用的是miniUI框架(不要问为什么,我从16年毕业到现在,这家公司我所在的项目前端都是miniUI或者easyUI)
后端技术是:spring mvc
数据库用的 :oralce
先简单分析一下这个报表,思路有两个:
(1)把整个展示当做一个datagrid,对于中间的那些中文,可以在数据库中查找出来,然后显示在界面。
(2)分两个datagird,来合并整个画面,这样做起来比较简单,在数据库中只需要每个datagrid各自执行各自的存储就可以,最后在画面进行显示就OK
我采用的是第二种做法,避免在数据库查找过多中文。。。。
下面总结我用到的前端后者后端应该注意的地方:
(1)界面查询条件接产单位,根据不同权限登录显示不同,比如权限为2的登录以后直接显示自己的单位名称,权限为1的登录,显示所有权限为2的单位名称,这里采用了JSTL中的<c:choose></c:choose>
标签。
语法格式如下:
<c:choose> <c:when test="<boolean>"/> ... </c:when> <c:when test="<boolean>"/> ... </c:when> ... ... <c:otherwise> ... </c:otherwise></c:choose>
该标签相当于java中的switch,default相当于该标签中的<c:otherwise></c:otherwise>
其中<c:choose>和<c:otherwise>
没有属性,<c:when>
标签是有属性的。
(2)查询条件中统计年月,要求只可以查询当前年月之前的数据,所以此处有JS校验
当选择的是年月,采用了如下的JS校验:
var now = new Date(); var month = (now.getMonth()+1)>10?(now.getMonth()+1):"0"+(now.getMonth()+1); var yf = now.getFullYear()+"-"+month; if(tjrq > yf ){ mini.alert('不能查询本月之后的报表数据!'); return; }
其中var tjrq=mini.get('tjrq').getFormValue();
获取。
对于选择年,不可以大于当前年,是采用了一个onDrawDate属性,具体如下:
function onDrawDate(e) { var date = e.date; var d = new Date(); if (date.getTime() > d.getTime()) { e.allowSelect = false; } }
(3)关于界面中的单元格合并问题,采用的是miniUI的方法,
需要注意如下事项:
(a)必须在datagrid中写 onLoad=”onLoad”,这样才可以触发合并单元格事件。
(b)必须在后面有mergeCells方法,否则只是触发事件,但是不可以达到合并单元格的效果。
(c)可以找规律,写循环来合并单元格,这样可以减少重复代码量。
代码如下:
function onLoad(e){ var grid = e.sender; var merges = [ {rowIndex:1,columnIndex:1,rowSpan:1,colSpan:5}, {rowIndex:1,columnIndex:6,rowSpan:1,colSpan:5}, {rowIndex:1,columnIndex:11,rowSpan:1,colSpan:5}, {rowIndex:2,columnIndex:1,rowSpan:1,colSpan:5}, {rowIndex:2,columnIndex:6,rowSpan:1,colSpan:5}, {rowIndex:2,columnIndex:11,rowSpan:1,colSpan:5}, {rowIndex:3,columnIndex:1,rowSpan:1,colSpan:5}, {rowIndex:3,columnIndex:6,rowSpan:1,colSpan:5}, {rowIndex:3,columnIndex:11,rowSpan:1,colSpan:5}, {rowIndex:4,columnIndex:1,rowSpan:1,colSpan:5}, {rowIndex:4,columnIndex:6,rowSpan:1,colSpan:5}, {rowIndex:4,columnIndex:11,rowSpan:1,colSpan:5}, {rowIndex:5,columnIndex:1,rowSpan:1,colSpan:5}, {rowIndex:5,columnIndex:6,rowSpan:1,colSpan:5}, {rowIndex:5,columnIndex:11,rowSpan:1,colSpan:5}, {rowIndex:6,columnIndex:1,rowSpan:1,colSpan:5}, {rowIndex:6,columnIndex:6,rowSpan:1,colSpan:5}, {rowIndex:6,columnIndex:11,rowSpan:1,colSpan:5}, {rowIndex:7,columnIndex:1,rowSpan:1,colSpan:5}, {rowIndex:7,columnIndex:6,rowSpan:1,colSpan:5}, {rowIndex:7,columnIndex:11,rowSpan:1,colSpan:5}, {rowIndex:8,columnIndex:1,rowSpan:1,colSpan:5}, {rowIndex:8,columnIndex:6,rowSpan:1,colSpan:5}, {rowIndex:8,columnIndex:11,rowSpan:1,colSpan:5} ]; grid.mergeCells(merges); }
(4)对于标题居中需要使用headerAlign="center"
属性,从后台查找出来的数据默认是左对齐的,如果需要居中显示则需要使用align="center"
属性
(5)这个界面我使用了两个mini-datagrid,所以在查找数据的时候可以这样搞,因为后台走的是两个不同的方法。
grid.load(param);grid1.load(param);
- 报表开发总结(1)
- Actuate报表开发总结
- biee报表开发总结
- FineReport报表开发总结
- ireport报表开发总结
- TEC1401.Report开发技术总结 - 第二章 使用Oracle Reports开发报表-创建一个简单报表(1/4)
- Oracle BIEE 报表开发总结
- 报表开发知识大全(1) 什么是报表
- TEC1401.Report开发技术总结 - 第六章 使用BI Publisher开发报表-创建XML数据源(1/5)
- 使用报表开发工具Ireport生成Pdf报表的总结
- 使用报表开发工具Ireport生成Pdf报表的总结
- DX报表的开发流程(1)
- TEC1401.Report开发技术总结 - 第三章 使用Oracle Reports开发报表-创建一个分组报表(2/4)
- TEC1401.Report开发技术总结 - 第四章 使用Oracle Reports开发报表-创建一个矩阵报表(3/4)
- 皕杰报表开发(自由式报表)
- ireport+jasperreports报表开发总结一(Struts2)
- MA status报表开发 问题总结
- MQMS项目一期报表开发总结
- HBase性能优化方法总结
- Android:MTK的Dialer模块联系人搜索
- tcp定时器
- C# ComboBox 类
- Java开发中的23种设计模式详解----模板方法模式(Template Method)
- 报表开发总结(1)
- HDU 4857(拓扑排序反向建边)
- css 实现标题溢出显示省略号
- TCP协议保证可靠交付的部分特点总结
- NodeMCU简介与快速入门
- Vim颜色配置
- 飞机大战(八):状态切换
- android经典蓝牙开发
- Git: SSL certificate problem: unable to get local issuer certificate