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. MySQL Errno : 1062 错误修复

    网站突然出现如下错误: MySQL Error : Duplicate entry '1' for key 'views' MySQL Errno : 1062 Message : Duplicate ...

  2. mysql常用命令及语法规范

    mysql命令不区分大小写,函数和关键字建议使用大写字母,以分号结束语句. 显示当前服务器版本 SELECT VERSION(); 显示当前时间 SELECT NOW(); 显示当前用户 SELECT ...

  3. 再测简单的JSP---JSP和Serlet的关系

    <Java Web入门经典.pdf>中第3章 末尾:, 创建一个web动态项目SqlServerTest,创建一个JSP文件index.jsp ,启动服务器 浏览器输入  http://l ...

  4. 为了确认是您本人在申请搬家,请在原博客发表一 篇标题为《将博客搬至CSDN》的文章,并将文章地址填写在上方的"搬家通知地址"中

    为了确认是您本人在申请搬家,请在原博客发表一 篇标题为<将博客搬至CSDN>的文章,并将文章地址填写在上方的"搬家通知地址"中

  5. android SeekBar设置背景无法被填充满的bug

    在做一个播放进度的时候,用到了SeekBar,调用布局如下: <SeekBar android:id="@+id/example_audio_bar" android:lay ...

  6. Latex自定义文档纸张大小

    \usepackage{geometry} \special{papersize=8.5in,11in}%纸张大小为8.5inch×11inch

  7. 【转】python 面向对象(进阶篇)

    [转]python 面向对象(进阶篇) 上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 ...

  8. XE7/X10.2 Datasnap使用 dbExpress 连接MySQL数据库

    本人使用:DELPHI X10.2.2 版本连接 MYSQL 5.1 (安装 mysql-5.1.72-win32.msi)的32位版本,开始连接不了: 将 MYSQL 5.1 安装目录下bin 中的 ...

  9. Nginx range filter模块数字错误漏洞修复 (Nginx平滑升级) 【转】

    对线上生产环境服务器进行漏洞扫描, 发现有两台前置机器存在Nginx range filter模块数字错误漏洞, 当使用nginx标准模块时,攻击者可以通过发送包含恶意构造range域的header ...

  10. mac技巧之常用的快键键

    1.修改文件名 选中文件按return键即可修改文件名. 2.文件预览 选中文件按照空格键即可实现文件的预览(并不是打开文件) 3.任务之间进行切换 command+tab 4.复制文件 推动文件按照 ...