前端js給list分組,每組前添加一條數據

前端以列表形式實現數據展示,後端返回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();
});

最終效果
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章