前端以列表形式实现数据展示,后端返回List<Object>
对象后,前端js进行数据处理,此处使用前端框架为MiniUi
page.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<!-- 此处引入MiniUi -->
</head>
<body>
<h2 class="title1"><span>列表</span></h2>
<div class="mini-fit">
<div class="mini-dataGrid mini-dataGrid-reset" id="list-grid" allowAlternating="true" pageSize="20" multiSelect="true" allowMoveColumn="false" allowSortColumn="false" showEmptyText="true" emptyText="暂无数据" style="width: 100%; height: 100%">
</div>
</div>
<script src="${contextPath}/resources/js/page.js"></script>
</body>
</html>
page.js
var onlineListGrid = {
grid: null,
init: function() {
mini.parse();
this.grid = mini.get('list-grid');
this.grid.setColumns(this.buildColumns());
this.grid.setUrl(contextPath + '/online-roster/page.html');// 后台接口
this.loadGrid();
$('.mini-grid-pager').remove();//取消分页
},
loadGrid: function() {
var me = this
this.grid.load({
jsonParam: me.getSearchForm()
}, function() {
// 1.根据学院进行分组
var datas = me.grid.getData();
var list = [];
var map = {};
$.each(datas,function(i,v){
var vst=datas[i];
if(!map[vst.yxsm]){
map[vst.yxsm]=new Array();
}
map[vst.yxsm].push(vst);
})
// 2.每个学院前添加一条数据
var xyList=[];
for( i in map){
var arr=[];
var valueList = map[i];
var obj = valueList[0];
arr.push({'yxsmc':obj.yxsmc,'rs':obj.rs});
var st = me.xhxy(map[i]);
xyList=xyList.concat(arr.concat(st));
}
me.grid.setData(xyList);
})
},
// 构造专业分组
xhxy:function(xy){
var zyMap={};
var zys=[];
$.each(xy,function(i,v){
var zy = xy[i];
if (!zyMap[zy.zydm]) {
zyMap[zy.zydm] = new Array();
}
zyMap[zy.zydm].push(zy);
});
// 每个专业第0条添加数据
for(i in zyMap){
var arr=[]
var zyObj=zyMap[i][0];
arr.push({'zymc':zyObj.zymc,'rs':zyObj.rs,'yxsm':zyObj.yxsm});
zys=zys.concat(arr.concat(zyMap[i]));
}
return zys;
},
buildColumns: function() {
var me = this
var column = [{
header: "学院、专业、研究方向",
field: "yxsmc",
allowSort: true,
width: "200",
name: 'yxsmc',
align: "center",
headerAlign: "center",
renderer: function(e) {
var v = e.record;
if (v.yjfxm) {
return v.yjfxm;
} else if (v.zydm) {
return "<a href='#'>" + v.zymc + "</a>";
}else {
return "<a href='#'>" + v.yxsmc + "</a>";
}
}
}, {
header: "学习方式",
field: "xxfs",
allowSort: true,
width: "35",
name: 'action',
align: "center",
headerAlign: "center"
},{
header: "人数",
field: "rs",
allowSort: true,
width: "50",
name: 'action',
align: "center",
headerAlign: "center",
renderer: function(e) {
var v = e.record;
if (v.yjfxm) {
return "";
}else if (zydm) {
return v.rs;
}
}
}]
return column
}
};
$(function() {
onlineListGrid.init();
});
最终效果