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



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

    注:本文来源: 原创

    一:图样你效果图

    image



    二:代码实现

    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:'调整方式名称'     ,80,halign:'center',align:'left'},
     18 					    {field:'adjust_and_amt',title:'追加方金额'        ,150,halign:'center',align:'right'},
     19 				    	{field:'adjust_and_amt',title:'追减方金额'        ,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 












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

  • 相关阅读:
    封装Socket.BeginReceive/EndReceive以支持Timeout
    使用反射动态创建类型实例
    泛型List<T>排序(利用反射)
    复旦版最佳医院排行 沪21家医院入选全国百佳
    C#格式化字符串
    一些很酷的.Net技巧
    系列文章--SQLite文章
    C#垃圾回收机制
    C#中Cache的使用
    ASP.NET Cache缓存的使用
  • 原文地址:https://www.cnblogs.com/ios9/p/8110249.html
Copyright © 2020-2023  润新知