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

如何在DataGridView中合并相似值行并汇总数量与总额

解决DataGridView同名行合并及数量/总额累加问题

嗨,这个需求我之前做库存类应用的时候刚好碰到过,给你整理几个实用的思路和代码示例,应该能帮到你~

核心逻辑思路

  • 每次要添加商品时,先遍历DataGridView已有的行,检查是否存在商品名称完全相同的行
  • 如果找到同名行:取出该行当前的数量和总额,和新数据累加后更新该行的对应单元格
  • 如果没找到:直接新增一行数据

代码示例(以C# WinForms为例)

假设你的DataGridView列分别是商品名称、数量、总额,可以封装一个方法来处理这个合并逻辑:

private void AddOrMergeProduct(string productName, int quantity, decimal totalAmount)
{
    // 遍历现有行,跳过默认的空白新行
    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
        if (row.IsNewRow) continue;
        
        string existingProduct = row.Cells["商品名称"].Value.ToString();
        // 忽略大小写匹配,也可以改成严格匹配去掉StringComparison参数
        if (existingProduct.Equals(productName, StringComparison.OrdinalIgnoreCase))
        {
            // 累加数量
            int currentQty = Convert.ToInt32(row.Cells["数量"].Value);
            row.Cells["数量"].Value = currentQty + quantity;
            
            // 累加总额
            decimal currentTotal = Convert.ToDecimal(row.Cells["总额"].Value);
            row.Cells["总额"].Value = currentTotal + totalAmount;
            
            return; // 完成更新后直接退出方法
        }
    }
    
    // 没有找到同名商品,新增一行
    dataGridView1.Rows.Add(productName, quantity, totalAmount);
}

绑定数据源场景的处理

如果你的DataGridView是绑定DataTable这类数据源的,直接操作数据源会更稳妥,DataGridView会自动同步显示:

// 假设数据源是预先绑定好的DataTable dt
private void AddOrMergeProductToDataTable(string productName, int quantity, decimal totalAmount)
{
    // LINQ查找同名行
    DataRow targetRow = dt.AsEnumerable()
        .FirstOrDefault(r => r.Field<string>("商品名称").Equals(productName, StringComparison.OrdinalIgnoreCase));

    if (targetRow != null)
    {
        // 累加更新
        targetRow["数量"] = targetRow.Field<int>("数量") + quantity;
        targetRow["总额"] = targetRow.Field<decimal>("总额") + totalAmount;
    }
    else
    {
        // 新增行到数据源
        dt.Rows.Add(productName, quantity, totalAmount);
    }
}

小提示

  • 可以给数量和总额的转换加个try-catch,避免输入非数字导致报错
  • 如果是通过选择控件(比如下拉框、列表)触发添加操作,直接在选择事件里调用上面的方法就行

内容的提问来源于stack exchange,提问作者Jefferson Yosores Alcanar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:53:18