You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 01:54:34