GridView数字加千分位后求和失效,Replace去逗号无效求助
解决GridView千分位格式值合计加法问题
先排查你的
Replace失效原因:- 检查要处理的字符串里的逗号是半角(,)还是全角(,),如果是全角,你的
Replace(",","")自然没用,得改成Replace(",",""); - 确认你有没有把Replace后的结果赋值给变量——很多人会犯这个错:只写
originalValue.Replace(",", "")但没把返回值存到新变量里,正确写法是string cleaned = originalValue.Replace(",", "");
- 检查要处理的字符串里的逗号是半角(,)还是全角(,),如果是全角,你的
更稳妥的做法是直接解析带千分位的字符串为数值类型,不用手动替换:
用TryParse指定支持千分位的格式,这样不管格式里的细节,直接转成可计算的数值:string cellValue = yourGridView.Rows[rowIndex].Cells[totalColumnIndex].Text; decimal num; // 用InvariantCulture确保千分位解析规则一致 if (decimal.TryParse(cellValue, NumberStyles.AllowThousands | NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out num)) { totalAmount += num; }从根源避免这个问题的建议:
把显示格式和计算用数值分开——GridView单元格显示时用千分位格式化,但计算时直接从数据源(比如DataTable的行、绑定的实体对象)里取原始的数值类型(decimal/int),而不是从单元格的文本里扒字符串。比如绑定的时候:<asp:BoundField DataField="Amount" DataFormatString="{0:N}" HtmlEncode="False" />计算时直接取
((DataRowView)gridViewRow.DataItem)["Amount"]转成decimal,完全不用处理字符串。
内容的提问来源于stack exchange,提问作者اینترنت آریانا
相关产品推荐
相关产品推荐

