jqgrid框架下数字用千分位显示

有一个需求,需要jqgrid中所有的数字用千分位显示

千分位替换的代码到是简单

 var num = 234223423432; 
 var reg=/\d{1,3}(?=(\d{3})+$)/g;
 num = (num + '').replace(reg, '$&,');

问题是如何识别数字

之前改过源码,解决了空格的问题https://blog.csdn.net/qq_36804701/article/details/90710224

在这个基础上继续修改

                        G = function (a, b, c, d, e, f) {
                        	//TODO cellvalue转化
                            b = x(a, b, c, e, "add");
                            if(typeof b == "string"){
                            	var  reg = /<[^>]+>/g;
                            	if(!reg.test(b)){
                            		b = b.replace(/\s/g,"&nbsp;");
                            	}
                            }
                            if(!isNaN(b)){
                            	var reg=/\d{1,3}(?=(\d{3})+$)/g;
                            	b = (b + '').replace(reg, '$&,');
                            }
                            return '<td role="gridcell" ' + p(c, d, b, e, a, f) + ">" + b + "</td>"
                        },

但是这个时候又出现了一个问题,那就是有的单元格虽然是字符串类型但是会取数字的名字,比如产品编号很可能就是一串数字,而b则一定是string类型,用typeof不能识别。

我仔细观察后发现传进来的其实是数字类型,但是jqgrid给转化成字符串了。继续debug

G方法是在这里调用的,g是ajax请求过来的原生数据,y[p]是这个单元格的列名,于是我把y[p]传进了G方法

                        G = function (a, b, c, d, e, f,key) {
                        	//TODO cellvalue转化
                            b = x(a, b, c, e, "add");
                            if(typeof b == "string"){
                            	var  reg = /<[^>]+>/g;
                            	if(!reg.test(b)){
                            		b = b.replace(/\s/g,"&nbsp;");
                            	}
                            }
                            if(typeof e[key] == "number"){
                            	var reg=/\d{1,3}(?=(\d{3})+$)/g;
                            	b = (b + '').replace(reg, '$&,');
                            }
                            return '<td role="gridcell" ' + p(c, d, b, e, a, f) + ">" + b + "</td>"
                        },

然后用e[key]就能拿到原生数据,从而判断类型,这样就可以了。

但是要注意,你在后台传数字就不能用字符串而必须用数字类型

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值