jQuery LigerUI - 快速开发UI框架 - 演示系统

想做一个工资表,下面带各列数据的汇总,恰巧ligerui有汇总功能,但是只能对当前页面显示数据求和,毕竟前台js计算数据不是强项,还是应该post从后台取汇总数据。

先看看js代码:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE HTML>
<html>
<head><title>表格控件 - 固定列</title><link href="${pageContext.request.contextPath}/static/ligerUI/skins/Aqua/css/ligerui-all.css" rel="stylesheet" type="text/css"><script src="${pageContext.request.contextPath}/static/jquery/jquery-1.9.0.min.js" type="text/javascript"></script><script src="${pageContext.request.contextPath}/static/ligerUI/js/core/base.js" type="text/javascript"></script><script src="${pageContext.request.contextPath}/static/ligerUI/js/plugins/ligerGrid.js" type="text/javascript"></script><script src="${pageContext.request.contextPath}/static/ligerUI/js/plugins/ligerResizable.js" type="text/javascript"></script><script src="${pageContext.request.contextPath}/static/ligerUI/js/plugins/ligerDrag.js" type="text/javascript"></script><script src="${pageContext.request.contextPath}/static/CustomersData.js" type="text/javascript"></script><script type="text/javascript">var g;let test;$(function (){$.post("${pageContext.request.contextPath}/book/salaryobj",function (data) {//console.log(data)const data1 = JSON.parse(data);//const data1 = {Rows:obj,totalvalue:1001}console.log(data1)g = $("#maingrid4").ligerGrid({columns: [{display: '编号', name: 'personID', width: 60, frozen: true, totalSummary:{//type: 'count'render: function (sum, column, cell){return '<div>总数:' + data1.Total.personID + '</div>';}}} ,//align: 'left',{ display: '姓名', name: 'name', width: 60, frozen: true }, //minWidth{ display: '部门', name: 'department', width: 90, frozen: true }, //, frozen: true , align: 'left'{ display: '年', name: 'yyyy', width: 60 , frozen: true },//, align: 'left'{ display: '月', name: 'mm', width: 60, frozen: true }, //, align: 'left' , frozen: true{ display: '日', name: 'dd', width: 60, frozen: true, totalSummary:{//type: 'count'render: function (sum, column, cell){test = cell;return '<div>合计:</div>';}}},{ display: '基本工资', name: 'base', width: 90, totalSummary:{//type: 'count'render: function (sum, column, cell){test = cell;return '<div>' + data1.Total.base + '</div>';}}},{ display: '岗位工资', name: 'post', width: 90, totalSummary:{//type: 'count'render: function (sum, column, cell){test = cell;return '<div>' + data1.Total.post + '</div>';}}},{ display: '工龄工资', name: 'workingAge', width: 90, totalSummary:{//type: 'count'render: function (sum, column, cell){test = cell;return '<div>' + data1.Total.workingAge + '</div>';}}},{ display: '学历工资', name: 'education', width: 90, totalSummary:{//type: 'count'render: function (sum, column, cell){test = cell;return '<div>' + data1.Total.education + '</div>';}}},{ display: '独生子女费', name: 'oneChild', width: 90 , totalSummary:{//type: 'count'render: function (sum, column, cell){test = cell;return '<div>' + data1.Total.oneChild + '</div>';}}},{ display: '通讯费', name: 'communication', width: 90, totalSummary:{//type: 'count'render: function (sum, column, cell){test = cell;return '<div>' + data1.Total.communication + '</div>';}}},{ display: '交通费', name: 'transportation', width: 90 , totalSummary:{//type: 'count'render: function (sum, column, cell){test = cell;return '<div>' + data1.Total.transportation + '</div>';}}},{ display: '动态工资', name: 'dynamic', width: 90, totalSummary:{//type: 'count'render: function (sum, column, cell){test = cell;return '<div>' + data1.Total.dynamic + '</div>';}}},{ display: '加班费', name: 'overTime', width: 90 , totalSummary:{//type: 'count'render: function (sum, column, cell){test = cell;return '<div>' + data1.Total.overTime + '</div>';}}},{ display: '其他工资', name: 'other', width: 90, totalSummary:{//type: 'count'render: function (sum, column, cell){test = cell;return '<div>' + data1.Total.other + '</div>';}}},{ display: '应发工资合计', name: 'amount', width: 90 , totalSummary:{//type: 'count'render: function (sum, column, cell){test = cell;return '<div>' + data1.Total.amount + '</div>';}}},{ display: '社保基数', name: 'socialBase', width: 90, totalSummary:{//type: 'count'render: function (sum, column, cell){test = cell;return '<div>' + data1.Total.socialBase + '</div>';}}},{ display: '公积金基数', name: 'fundBase', width: 90 , totalSummary:{//type: 'count'render: function (sum, column, cell){test = cell;return '<div>' + data1.Total.fundBase + '</div>';}}},{ display: '医保基数', name: 'medicalBase', width: 90, totalSummary:{//type: 'count'render: function (sum, column, cell){test = cell;return '<div>' + data1.Total.medicalBase + '</div>';}}},{ display: '养老保险', name: 'socialInsurance', width: 90 , totalSummary:{//type: 'count'render: function (sum, column, cell){test = cell;return '<div>' + data1.Total.socialInsurance + '</div>';}}},{ display: '失业保险', name: 'unemploymentInsurance', width: 90, totalSummary:{//type: 'count'render: function (sum, column, cell){test = cell;return '<div>' + data1.Total.unemploymentInsurance + '</div>';}}},{ display: '医疗保险', name: 'medicalInsurance', width: 90 , totalSummary:{//type: 'count'render: function (sum, column, cell){test = cell;return '<div>' + data1.Total.medicalInsurance + '</div>';}}},{ display: '午餐费', name: 'lunch', width: 90, totalSummary:{//type: 'count'render: function (sum, column, cell){test = cell;return '<div>' + data1.Total.lunch + '</div>';}}},{ display: '住房公积金', name: 'fund', width: 90 , totalSummary:{//type: 'count'render: function (sum, column, cell){test = cell;return '<div>' + data1.Total.fund + '</div>';}}},{ display: '扣款合计', name: 'deduction', width: 90, totalSummary:{//type: 'count'render: function (sum, column, cell){test = cell;return '<div>' + data1.Total.deduction + '</div>';}}},{ display: '个税专项扣除', name: 'taxFree', width: 90 , totalSummary:{//type: 'count'render: function (sum, column, cell){test = cell;return '<div>' + data1.Total.taxFree + '</div>';}}},{ display: '应纳税所得额', name: 'taxBase', width: 90 , totalSummary:{//type: 'count'render: function (sum, column, cell){test = cell;return '<div>' + data1.Total.taxBase + '</div>';}}},{ display: '个人所得税', name: 'tax', width: 90, totalSummary:{//type: 'count'render: function (sum, column, cell){test = cell;return '<div>' + data1.Total.tax + '</div>';}}},{ display: '实发工资1', name: 'salary1', width: 90 , totalSummary:{//type: 'count'render: function (sum, column, cell){test = cell;return '<div>' + data1.Total.salary1 + '</div>';}}},{ display: '工会会费', name: 'dues', width: 90, totalSummary:{//type: 'count'render: function (sum, column, cell){test = cell;return '<div>' + data1.Total.dues + '</div>';}}},{ display: '实发工资2', name: 'salary2', width: 90, totalSummary:{//type: 'count'render: function (sum, column, cell){test = cell;return '<div>' + data1.Total.salary2 + '</div>';}}},{ display: '备注', name: 'remark', width: 300},], data: data1, pageSize: 20, sortName: 'personID', // data: data1是数据的入口,把官网例子中CustomersData改成data1即可,排序sortName: 'personID'把原始例子的 CustomerID改为personIDwidth: '98%', height: '98%', checkbox: true,rownumbers:true,fixedCellHeight:false//, totalRender: renderFunction   totalRender功能我试了下不好使,不用这个功能});$("#pageloading").hide();// 这个函数是配套 totalRender功能的,没有用function renderFunction(data, currentPageData){return '总仓库数量:'+data.totalValue;}});});</script>
</head>
<body><h3><a href="${pageContext.request.contextPath}/">返回</a>
</h3><div class="l-loading" style="display: block" id="pageloading">
</div>
<div id="maingrid4" style="margin: 0; padding: 0">
</div>
<div style="display: none;">
</div></body>
</html>

json数据格式:

{"Rows":
[{"amount":100301.0,"base":50001.0,"communication":100.0,"dd":10,"deduction":91.2,"department":"网络运营部","dues":500.01,"dynamic":100.0,"education":0.0,"fund":28.0,"fundBase":400.0,"lunch":22.0,"medicalBase":400.0,"medicalInsurance":8.0,"mm":11,"name":"张三","oneChild":0.0,"other":0.0,"overTime":0.0,"personID":28,"post":50000.0,"salary1":100209.8,"salary2":99709.79,"socialBase":400.0,"socialInsurance":32.0,"tax":0.0,"taxBase":0.0,"taxFree":0.0,"transportation":100.0,"unemploymentInsurance":1.2,"workingAge":0.0,"yyyy":2021},
{"amount":100302.0,"base":50002.0,"communication":100.0,"dd":10,"deduction":91.2,"department":"网络运营部","dues":500.01,"dynamic":100.0,"education":0.0,"fund":28.0,"fundBase":400.0,"lunch":22.0,"medicalBase":400.0,"medicalInsurance":8.0,"mm":11,"name":"李四","oneChild":0.0,"other":0.0,"overTime":0.0,"personID":29,"post":50000.0,"salary1":100210.8,"salary2":99710.79,"socialBase":400.0,"socialInsurance":32.0,"tax":0.0,"taxBase":0.0,"taxFree":0.0,"transportation":100.0,"unemploymentInsurance":1.2,"workingAge":0.0,"yyyy":2021},
{"amount":100303.0,"base":50003.0,"communication":100.0,"dd":10,"deduction":91.2,"department":"网络运营部","dues":500.02,"dynamic":100.0,"education":0.0,"fund":28.0,"fundBase":400.0,"lunch":22.0,"medicalBase":400.0,"medicalInsurance":8.0,"mm":11,"name":"王五","oneChild":0.0,"other":0.0,"overTime":0.0,"personID":30,"post":50000.0,"salary1":100211.8,"salary2":99711.78,"socialBase":400.0,"socialInsurance":32.0,"tax":0.0,"taxBase":0.0,"taxFree":0.0,"transportation":100.0,"unemploymentInsurance":1.2,"workingAge":0.0,"yyyy":2021},
{"amount":100304.0,"base":50004.0,"communication":100.0,"dd":10,"deduction":91.2,"department":"网络运营部","dues":500.02,"dynamic":100.0,"education":0.0,"fund":28.0,"fundBase":400.0,"lunch":22.0,"medicalBase":400.0,"medicalInsurance":8.0,"mm":11,"name":"赵六","oneChild":0.0,"other":0.0,"overTime":0.0,"personID":31,"post":50000.0,"salary1":100212.8,"salary2":99712.78,"socialBase":400.0,"socialInsurance":32.0,"tax":0.0,"taxBase":0.0,"taxFree":0.0,"transportation":100.0,"unemploymentInsurance":1.2,"workingAge":0.0,"yyyy":2021},
{"amount":100305.0,"base":50005.0,"communication":100.0,"dd":10,"deduction":91.2,"department":"网络运营部","dues":500.03,"dynamic":100.0,"education":0.0,"fund":28.0,"fundBase":400.0,"lunch":22.0,"medicalBase":400.0,"medicalInsurance":8.0,"mm":11,"name":"小七","oneChild":0.0,"other":0.0,"overTime":0.0,"personID":32,"post":50000.0,"salary1":100213.8,"salary2":99713.77,"socialBase":400.0,"socialInsurance":32.0,"tax":0.0,"taxBase":0.0,"taxFree":0.0,"transportation":100.0,"unemploymentInsurance":1.2,"workingAge":0.0,"yyyy":2021},
{"amount":100306.0,"base":50006.0,"communication":100.0,"dd":10,"deduction":91.2,"department":"网络运营部","dues":500.03,"dynamic":100.0,"education":0.0,"fund":28.0,"fundBase":400.0,"lunch":22.0,"medicalBase":400.0,"medicalInsurance":8.0,"mm":11,"name":"小八","oneChild":0.0,"other":0.0,"overTime":0.0,"personID":33,"post":50000.0,"salary1":100214.8,"salary2":99714.77,"socialBase":400.0,"socialInsurance":32.0,"tax":0.0,"taxBase":0.0,"taxFree":0.0,"transportation":100.0,"unemploymentInsurance":1.2,"workingAge":0.0,"yyyy":2021},
{"amount":100307.0,"base":50007.0,"communication":100.0,"dd":10,"deduction":91.2,"department":"人力资源部","dues":500.04,"dynamic":100.0,"education":0.0,"fund":28.0,"fundBase":400.0,"lunch":22.0,"medicalBase":400.0,"medicalInsurance":8.0,"mm":11,"name":"老九","oneChild":0.0,"other":0.0,"overTime":0.0,"personID":34,"post":50000.0,"salary1":100215.8,"salary2":99715.76,"socialBase":400.0,"socialInsurance":32.0,"tax":0.0,"taxBase":0.0,"taxFree":0.0,"transportation":100.0,"unemploymentInsurance":1.2,"workingAge":0.0,"yyyy":2021}],
"Total":{"amount":702128.0,"base":350028.0,"communication":700.0,"dd":0,"deduction":638.4,"dues":3500.16,"dynamic":700.0,"education":0.0,"fund":196.0,"fundBase":2800.0,"lunch":154.0,"medicalBase":2800.0,"medicalInsurance":56.0,"mm":0,"oneChild":0.0,"other":0.0,"overTime":0.0,"personID":7,"post":350000.0,"salary1":701489.56,"salary2":697989.44,"socialBase":2800.0,"socialInsurance":224.0,"tax":0.0,"taxBase":0.0,"taxFree":0.0,"transportation":700.0,"unemploymentInsurance":8.4,"workingAge":0.0,"yyyy":0}}

每列数据格式的js代码:

{ display: '姓名', name: 'name', width: 60, frozen: true }, //minWidth
{ display: '部门', name: 'department', width: 90, frozen: true }, //, frozen: true , align: 'left'
{ display: '年', name: 'yyyy', width: 60 , frozen: true },//, align: 'left'
{ display: '月', name: 'mm', width: 60, frozen: true },

LigerUI框架Columns数组中每个列对象的参数解释:

参数名 类型 描述 默认值
id String 列ID
name String 表格列名
totalSummary Object 汇总
columns Object 多表头支持
isAllowHide Bool 是否允许隐藏,如果允许,将会出现在【显示/隐藏列右键菜单】
isSort Bool 是否允许排序
type String 排序类型,包括string、int、float、date
width Int 表格列宽度
minWidth Int 表格列最小允许宽度(调整大小时将不允许小于这个值)
format String 格式化
align String 左右对齐,left、right、center
hide String 初始化隐藏
editor Obect 编辑器
render Function 单元格渲染器
display String 表格列标题
headerRender Function 头部单元格渲染器(column)
frozen Bool 冻结列状态 true

jQuery LigerUI - 快速开发UI框架 - API文档

为每列数据添加合计的js代码:

{ display: '日', name: 'dd', width: 60, frozen: true, totalSummary:{//type: 'count'render: function (sum, column, cell){test = cell;return '<div>合计:</div>';}}
},
{ display: '基本工资', name: 'base', width: 90, totalSummary:{//type: 'count'render: function (sum, column, cell){test = cell;return '<div>' + data1.Total.base + '</div>';}}
},

比一般列数据格式多了totalSummary,而且要自定义汇总的数据值,需用到render函数,

虽然render: function (sum, column, cell)有三个参数,但是我不用这些参数,直接从post返回值中取数据来显示即可。(test=cell是多余的)

Grid - jQuery LigerUI API

最终效果:

前端UI框架ligerui表格汇总功能无法计算全部数据的合计的解决方法相关推荐

  1. 汇总——前端UI框架

    本文整理了一些比较流行的前端UI框架,排名不分先后,仅供参考.可按照项目需求自行考虑. 1.bootstrap Bootstrap 是Twitter推出的一个用于前端开发的,一个用于 HTML.CSS ...

  2. VUE常用UI组件插件及框架-vue前端UI框架收集

    UI组件及框架 element - 饿了么出品的Vue2的web UI工具套件 mint-ui - Vue 2的移动UI元素 iview - 基于 Vuejs 的开源 UI 组件库 Keen-UI - ...

  3. element ui点击按钮弹出款_前端猿应该知道的十大最流行的前端UI框架

    在前端项目开发过程中,现在很少有人会使用原生的CSS来搭建页面,总归都会引入一些前端UI框架以减少代码的书写.一般为了方便自己的使用,很多大公司都有自己的一套UI框架,同时也会把其开源出来.下面就是最 ...

  4. 原有ui项目调用qml_从0开始写前端UI框架:概述

    # 缘起 经常听说:不要重复造轮子,我深同此看法.如果在项目开发阶段,你还在研究和仿造现成的轮子,那项目的交付期将会是遥遥无期,能不能造出轮子不说,就算是造出的轮子,功能别人已经实现过了的功能,你的 ...

  5. 从0开始写前端UI框架:概述

    缘起 经常听说:不要重复造轮子,我深同此看法.如果在项目开发阶段,你还在研究和仿造现成的轮子,那项目的交付期将会是遥遥无期,能不能造出轮子不说,就算是造出的轮子,功能别人已经实现过了的功能,你的轮子会 ...

  6. 推荐几个精致的web UI框架及常用前端UI框架

    以下是几个精致的web UI框架 1.Aliceui Aliceui是支付宝的样式解决方案,是一套精选的基于 spm 生态圈的样式模块集合,是 Arale 的子集,也是一套模块化的样式命名和组织规范, ...

  7. 前端ui框架layUI

    layUI layui(谐音:类UI) 是一款采用自身模块规范编写的前端 UI 框架,遵循原生 HTML/CSS/JS 的书写与组织形式,门槛极低,拿来即用. https://www.layui.co ...

  8. 目前流行前端UI框架排行榜

    在前端项目开发过程中,总是会引入一些UI框架,已为方便自己的使用,很多大公司都有自己的一套UI框架,下面就是最近经常使用并且很流行的UI框架. 一.Mint UI 流行指数:★★★★ Mint UI是 ...

  9. 后端程序员转行前端,强烈推荐这6个前端UI框架,第二款小程序UI框架颜值最高!...

    昨天有个同事问我有没有可以直接上手的前端UI框架. 那今天就给大家推荐6个简单.视觉体验好的前端框架 没吃过猪肉,肯定见过猪跑! Jquery Mobile demo地址: https://demos ...

  10. 2014年最受欢迎WEB前端UI框架

    2014年已经过了一半,WEB前端受到更多人的观注,WEB前端也已经逐渐成为一种职业头衔! 相应的WEB前端UI框架更是受到新人追捧,下边为大家列出目前最受欢迎.最优秀的前端框架以供大家选择一款适合自 ...

最新文章

  1. 利用现有资源快速实现汉语专用分词系统
  2. 为什么“ cd”在shell脚本中不起作用?
  3. (68)FPGA面试题-使用不同的代码实现2:1 MUX ?使用assign语句
  4. 【MyBatis-Plus】第一章 快速入门
  5. make -C $(KDIR) M=$(PWD) modules
  6. 洛谷 P1983 [NOIP2013 普及组] 车站分级
  7. php分页3 1,经典php分页代码与分页原理(1/3)
  8. spark原理和spark与mapreduce的最大区别
  9. 背包九讲--01背包
  10. 查询数据库授权以及授权到期的处理方法
  11. CDH动态资源池配置
  12. win7开机突然变得很慢_Win7电脑反应变慢怎么办?
  13. 15.在springboot中的事务处理
  14. 外包or外派岗,可以去?
  15. RK3568平台开发系列讲解(调试篇)PCIe调试详解
  16. 计算机音乐谱大全好汉歌,好汉歌民谣简谱
  17. 怎样通过flash模板安装Facebook专页
  18. matlab 不规则 griddata,MATLAB 不规则随机数据点,画三维曲面图形,griddata, meshgrid...
  19. 5行代码!完成bat病毒制作!!!
  20. 《东周列国志》第四十一回 连谷城子玉自杀 践土坛晋侯主盟

热门文章

  1. m4s格式转换mp3_视频怎么转换成音频MP3格式
  2. 如何用python爬取图片数据_python爬虫怎么实现爬取网站图片?
  3. 【Professional English】Words Summary
  4. 校验身份证的行政区域代码(包含已撤销区域代码)2021年8月31日更新
  5. Colibri 片段化学空间的兴起
  6. 安兔兔:2018年8月iOS设备性能排行榜
  7. 如何避免“被贷款”影响个人信用记录?
  8. 阿里云 MaxCompute Tunnel Upload 上传典型问题整理
  9. 看完你就知道交换机端口该搭配什么光模块了
  10. 通讯:白先勇的“八千里路云和月”