GridView如何通过IF条件实现列间求和 空值时总计列自动置空
GridView 列求和空值异常修复方案
问题根因
原有逻辑直接使用Convert.ToInt32做类型转换,当列值被清空(值为null/DBNull)时,该方法会默认返回0而非识别为空状态,导致删除Column_A内容后依然会执行求和计算,合计列无法自动清空。
带条件判断的实现代码
直接替换原有CellEndEdit事件逻辑即可:
private void Gdv_CellEndEdit(object sender, GridViewCellEventArgs e) { foreach (GridViewDataRowInfo Val in Gdv.SelectedRows) { object valA = Val.Cells["Column_A"].Value; int numA; // 核心判断:仅当Column_A存在可转换为整数的有效输入时,才执行求和 if (valA != null && valA != DBNull.Value && int.TryParse(valA.ToString().Trim(), out numA)) { // 兼容Column_B空值场景,空值默认按0计算,避免转换报错 object valB = Val.Cells["Column_B"].Value; int numB = 0; if (valB != null && valB != DBNull.Value) { int.TryParse(valB.ToString().Trim(), out numB); } Val.Cells["Column_Total"].Value = numA + numB; } else { // Column_A值被删除/无效时,直接清空合计列 Val.Cells["Column_Total"].Value = DBNull.Value; } } }
逻辑说明
- 优先对Column_A做非空、非DBNull、整数格式三重校验,完全满足Column_A有有效输入才计算的需求
- 替换
Convert.ToInt32为int.TryParse,避免用户输入非数字内容时触发格式转换异常 - Column_B增加空值兼容,若业务要求两列都必须有值才求和,只需把Column_B的有效校验合并到外层IF条件中即可
内容的提问来源于stack exchange,提问作者Philipe
相关产品推荐
相关产品推荐

