easyui生成合并行,合计计算价格
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生成合并行,合计计算价格的更多相关文章
- Android中购物车的全选、反选、问题和计算价格
此Demo主要解决的是购物车中的全选,反选计算价格和选中的条目个数的问题,当选中几条时,点击反选,会把当先选中的变为不选中,把不选中的变为选中.点击全选会全部选中,再次点击时,变为全部不选中. //- ...
- HTML打折计算价格
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <met ...
- Reapter合并行
html文件: <asp:Repeater ID="rptEmployee" runat="server"> <HeaderTemplate& ...
- 例题:超市买东西的程序。输入商品信息,计算价格,价格满多少元打折。这道题用到结构体,集合,for循环,if else语句
知识要点: 集合和数组的区别:数组是连续的,同一类型的一块区域,而集合可以是不连续的,多种数据类型的. 集合属性:.count 方法:.Add() 将对象添加到ArrayList中实际包含的元素数 ...
- checkbox的全选、反选(计算价格)
package com.baidu.jisuan; import java.util.ArrayList;import java.util.List; import com.baidu.adapter ...
- Easyui 生成layout
Easyui 生成layout var $tabs; var $body; var $south; function appendLayout(title, href) { if (!$body) $ ...
- Vim常用操作-合并行。
刚接触 Vim 会觉得它的学习曲线非常陡峭,要记住很多命令.所以这个系列的分享,不会教你怎么配置它,而是教你怎么快速的使用它. 在开发时为了代码美观,经常会把属性用换行的方式显示. <el-di ...
- 计算价格, java中浮点数精度丢失的解决方案
计算价格, java中浮点数精度丢失的解决方案
- ASP.NET页面使用JQuery EasyUI生成Dialog后台取值为空
原因: JQuery EasyUI生成Dialog后原来的文档结构发生了变化,原本在form里的内容被移动form外面,提交到后台后就没有办法取值了. 解决办法: 在生成Dialog后将它append ...
随机推荐
- 卷积中的full、same、valid
通常用外部api进行卷积的时候,会面临mode选择. 本文清晰展示三种模式的不同之处,其实这三种不同模式是对卷积核移动范围的不同限制. 设 image的大小是7x7,filter的大小是3x3 ...
- 【css】正确的让文本换行
通常文本换行我们会使用word-break属性,有两个值供我们选择 word-break: break-all; word-break: break-world; 那么如何区分这两个值呢,我们看图说话 ...
- Ant 与jemter的结合--批量执行jmeter脚本
一.Ant 介绍&作用: Apache Ant,是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发. 作用:打包,部署,运行Java工程 二.下 ...
- 使用Docker部署javaWeb应用
1. 安装Dcoker http://www.cnblogs.com/zhangqian27/p/9089815.html 2. 查看镜像 $ docker images 3. 搜索镜像 $ dock ...
- drawImg、x5浏览器、react
- Codeforces Round #545 (Div. 2)(B. Circus)
题目链接:http://codeforces.com/contest/1138/problem/B 题目大意:贼绕口的题目,就是给你两个字符串s1,s2,然后每一个人代表一列,第一列代表技能一每个人是 ...
- 人人项目renren-security\git\renren-security的目录下的文件列表
\.git\config; \.git\FETCH_HEAD; \.git\HEAD; \.git\index; \.git\logs\HEAD; \.git\logs\refs\heads\mast ...
- 51nod 1232 完美数
题目思路:数位dp,若这个数能被每位的非0数整除,那么这个数一定可以被每一位数的lcm整除,lcm(1,2,3,4,5,6,7,8,9) = 2520,所以可以通过将这个数对2520取模来压缩空间,取 ...
- map中的count方法
map.count(Key)返回值为1或者0,1返回存在,0返回不存在,返回的是布尔类型的值,因为在map类型中所有的数据的Key值都是不同的,所以被count的数要么存在1次,要么不存在
- Oracle Audit 审计功能的认识与使用
1.Audit的概念 Audit是监视和记录用户对数据库进行的操作,以供DBA进行问题分析.利用Audit功能,可以完成以下任务: 监视和收集特定数据库活动的数据.例如管理员能够审计哪些表被更新,在某 ...