easyui生成合并行,合计计算价格

注:本文来源: 原创

一:图样你效果图

二:代码实现

1:datagrid 列展示:

  1 	window.dataGrid = $("#dataGrid").widgets({
2 xtype:"datagrid",
3 idField:'gf_id',
4 pagination:true,
5 cellTip:true,
6 fit:true,
7 border:false,
8 height:480,
9 rownumbers:true,
10 pageSize:global_pageSize,
11 pageList:global_pageList,
12 showFooter:true,
13
14 frozenColumns:[
15 [
16 {field:'check',checkbox:true},
17 {field:'adjust_typename',title:'调整方式名称' ,width:80,halign:'center',align:'left'},
18 {field:'adjust_and_amt',title:'追加方金额' ,width:150,halign:'center',align:'right'},
19 {field:'adjust_and_amt',title:'追减方金额' ,width:150,halign:'center',align:'right'}
20 ]
21 ]
22
23 });
24 $('#dataGrid').datagrid({
25 rowStyler:function(index,row){
26 if (row.zb_id=="小计"){
27 return 'background-color:#D7FFEE;';
28 }
29 }
30 });

2:小计的实现:

  1 window.detailGridBind = $W.databind.arrayDatabind({
2 id:'detailGridBind',
3 name:'主表绑定',
4 autoload:true,
5 noReload:true,
6 pageSize:global_pageSize,
7 binds:['#dataGrid'],
8 beforeLoad:function (param) {
9 param.ys_zxtz_id=window.ys_zxtz_id;
10
11 },afterLoad:function(data){
12
13 //-------增加小计----------------------------------------
14 var flag=0;
15 var len = data.data.length;
16
17 /*if(len>0){
18 $("#remark").val(data.data[0].remark);
19 $("#remarks").val(data.data[0].remarks);
20 }*/
21
22 for(var i=0;i<len;i++){
23 if(i + 1 < len){
24 var row=data.data[i];
25 var rowNext=data.data[i+1];
26 if(row.order_id != rowNext.order_id){
27 debugger;
28 var rowParam = compute(i+1,flag,data.data);
29 flag=i+2;
30 data.data.splice(rowParam.index,0,rowParam.row);
31 i++;
32 len++;
33 var index = rowParam.index;
34 }
35 }else{
36 debugger;
37 var rowParam = compute(i+1,flag,data.data);
38 data.data.splice(rowParam.index,0,rowParam.row);
39 var index = rowParam.index;
40 break;
41 }
42 }
43
44
45
46 } return data;
52
53 },onLoadSuccess:function(data){
54
55
56 }
57 });

3:金额 统计

  1 //统计列函数,返回插入行参数
2 function compute(index,flag,data){
3 var total_1 = 0;
4 var total_2 = 0;
5 for(var i=flag;i<index;i++){
6 total_1 += parseFloat(data[i].adjust_and_amt==undefined?0.00:data[i].adjust_and_amt);
7 total_2 += parseFloat(data[i].adjust_sub_amt== undefined?0.00:data[i].adjust_sub_amt);
8 }
9 window.param={
10 index:index,
11 row:{adjust_typename:"小计",adjust_and_amt:formatMoney(total_1,2),adjust_sub_amt:formatMoney(total_2,2)
12 }
13 }
14 return param;
15 }
16

4:金额 格式化

  1
2
3 /**
4 * 金额数据校验:
5 * @param data
6 * @returns {Array}
7 */
8 function dataMathFormatBoolean(data){
9 var regexp_js1=/^-?(?:0|[1-9][0-9]*|(?:[1-9][0-9]{0,2})(?:(?:,[0-9]{3})*))(?:\.[0-9]+)?$/;//千分位 数字格式化正则校验表达式 /^(-)?\d{1,3}(,\d{3})*(.\d+)?$/
10 var returnData=[];
11 //把 不是数字型数据(如:segsdg2323)给返回回去;让用户重新输入
12 if(!regexp_js1.test(Money2Num(data))){
13 returnData.data=data;
14 returnData.Falg=false;//不符合要求
15 }else{
16 returnData.data=parseFloat(trm((data+'').replace(/,/g,'')));
17 returnData.Falg=true;//符合要求
18 }
19 return returnData;
20 }
21
22 /**
23 * 金额值格式化
24 * @param value
25 * @returns
26 */
27 function commonFormatMoney(value){
28 var arrayData= dataMathFormatBoolean(value);
29 if(!arrayData.Falg){
30 $.messager.alert("警告",arrayData.data+" 不符合要求,请输入正确格式;如:123或123.235或-123.456或-122 ","warning");
31 return;
32 }
33 return formatMoney(arrayData.data, 2);
34 }
35
36
37 /*
38 * formatMoney(s,n)
39 * 功能:金额按千位逗号分割
40 * 参数:n,需要格式化的金额数值.
41 * 参数:type,判断格式化后的金额是否需要小数位.
42 * 返回:返回格式化后的数值字符串.
43 */
44 function formatMoney(s, n) {
45 n =( (n >= 0 && n <= 20) ? n : 2); //小数点后小数位数的格式长度为0~20
46 //判断是否为数值型数据:例如:1;0;-1;如果非数值类型如(wesf,wef12)则返回 0;
47 if(!(/^-?(?:0|[1-9][0-9]*|(?:[1-9][0-9]{0,2})(?:(?:,[0-9]{3})*))(?:\.[0-9]+)?$/.test(trm((s+'').replace(/,/g,''))))) {
48 s=parseFloat(0).toFixed(n);
49 }else if (s == null || s == ""){
50 //判断是否为空或者是null 如果是 则返回数值0
51 s=parseFloat(0).toFixed(n);
52 }else{
53 var symbol='-';//声明 ’-‘号;用于对负数的格式化的处理
54 if(s>=0){
55 symbol='+';
56 }else{
57 symbol='-';
58 s=Math.abs(s);
59 }
60 /**
61 * 格式化:核心代码
62 */
63
64 s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + ""; //去掉空格 并格式化小数
65 var l = s.split(".")[0].split("").reverse(), r = s.split(".")[1]; //数据以 . 拆分
66 t = "";
67 for (i = 0; i < l.length; i++) {
68 t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
69 }
70 s= t.split("").reverse().join("") + "." + r;
71 if(n==0){
72 s= t.split("").reverse().join("");
73 }
74 /**
75 * 对于’-111‘格式的数据的格式化的处理
76 */
77 if(symbol=='-'){
78 if(s.length<4){
79 s=parseFloat(symbol+s).toFixed(n);
80 }else{
81 s=symbol+s;
82 }
83 }
84 }
85 return s;
86 }
87 /**
88 * 把已经被千分位格式化‘,’的数据,转换为数值型数据
89 * @param money 已经格式化的数据
90 * 思路:先把所有的‘,’替换为空格,
91 * 再把空格去掉,
92 * 再转换为浮点型
93 */
94 function Money2Num(money){
95 return parseFloat(trm((money+'').replace(/,/g,'')));
96 }
97
98
99

————————————————————————————————————————————————————————————————————————

easyui生成合并行,合计计算价格的更多相关文章

  1. Android中购物车的全选、反选、问题和计算价格

    此Demo主要解决的是购物车中的全选,反选计算价格和选中的条目个数的问题,当选中几条时,点击反选,会把当先选中的变为不选中,把不选中的变为选中.点击全选会全部选中,再次点击时,变为全部不选中. //- ...

  2. HTML打折计算价格

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <met ...

  3. Reapter合并行

    html文件: <asp:Repeater ID="rptEmployee" runat="server"> <HeaderTemplate& ...

  4. 例题:超市买东西的程序。输入商品信息,计算价格,价格满多少元打折。这道题用到结构体,集合,for循环,if else语句

    知识要点: 集合和数组的区别:数组是连续的,同一类型的一块区域,而集合可以是不连续的,多种数据类型的. 集合属性:.count 方法:.Add()  将对象添加到ArrayList中实际包含的元素数 ...

  5. checkbox的全选、反选(计算价格)

    package com.baidu.jisuan; import java.util.ArrayList;import java.util.List; import com.baidu.adapter ...

  6. Easyui 生成layout

    Easyui 生成layout var $tabs; var $body; var $south; function appendLayout(title, href) { if (!$body) $ ...

  7. Vim常用操作-合并行。

    刚接触 Vim 会觉得它的学习曲线非常陡峭,要记住很多命令.所以这个系列的分享,不会教你怎么配置它,而是教你怎么快速的使用它. 在开发时为了代码美观,经常会把属性用换行的方式显示. <el-di ...

  8. 计算价格, java中浮点数精度丢失的解决方案

    计算价格, java中浮点数精度丢失的解决方案

  9. ASP.NET页面使用JQuery EasyUI生成Dialog后台取值为空

    原因: JQuery EasyUI生成Dialog后原来的文档结构发生了变化,原本在form里的内容被移动form外面,提交到后台后就没有办法取值了. 解决办法: 在生成Dialog后将它append ...

随机推荐

  1. 测试四则运算2:Right-BICEP

    n6个值得测试的具体部位,他们能够提高你的测试技巧 nRight-结果是否正确? nB-是否所有的边界条件都是正确的? nI-能查一下反向关联吗 nC-能用其他手段交叉检查一下结果吗? nE-你是否可 ...

  2. Linux 查看系统版本和内核

    查看系统内核版本 [root@11e71db4a00e /]# cat /proc/version Linux version -.el7.x86_64 (builder@kbuilder.dev.c ...

  3. localStorage用法

    引用:https://www.cnblogs.com/st-leslie/p/5617130.html const STORAGE_KEY = 'todos-vuejs'; export defaul ...

  4. Java SE之调整JVM内存笔记

    [文档整理系列]  Java SE之调整JVM内存笔记 一般JVM内存限制是64Mbyte Eclipse下 Run as configrationArguments选项:-Xmx80m [设置虚拟机 ...

  5. 第26月第25天 ubuntu openjdk-8-jdk jretty

    1.ubuntu ============== sudo apt-get install openjdk-8-jdk https://blog.csdn.net/zhaohaiyitian88/art ...

  6. 配置mongo

    Windows 平台安装 MongoDB MongoDB 下载 MongoDB 提供了可用于 32 位和 64 位系统的预编译二进制包,你可以从MongoDB官网下载安装,MongoDB 预编译二进制 ...

  7. Java基础_0302:类和对象

    定义类 class Book { // 定义一个新的类 String title; // 书的名字 double price; // 书的价格 /** * 输出对象完整信息 */ public voi ...

  8. 一张图片资源要占用多大内存xhdpi xxhdpi

    一张图片资源要占用多大内存,可以用下面的计算公式计算 4 * withPixel*(targetDensity /sourcedensity) * heightPixel*(targetDensity ...

  9. CNN学习入门

    https://blog.csdn.net/ice_actor/article/details/78648780

  10. Css - 利于搜索引擎收录的三个标签

    Css - 利于搜索引擎收录的三个标签 <head> <meta charset="utf-8" /> <title>京东(JD.COM)-正品 ...