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

如何为数据绑定DataGridView编程添加行并实现列总计行

解决绑定数据源的DataGridView添加总计行的问题

兄弟,我太懂你这种绑定了数据源之后没法直接给DataGridView加行的头疼了——毕竟在数据绑定模式下,DataGridView的行是和数据源(比如DataTable)强关联的,直接操作DataGridView.Rows要么报错,要么根本不生效。核心思路得从修改数据源入手,而不是直接改表格本身,下面给你具体的步骤和代码示例:

核心原理

绑定模式下,DataGridView的行完全由绑定的数据源(比如DataTable、List)驱动,所以要添加总计行,必须先把总计数据加到数据源里,再让表格自动同步更新。

具体实现步骤(以DataTable为例)

假设你已经完成了各列的总计计算,接下来只需要把总计行插入到数据源中:

  1. 确保数据源是可编辑的
    如果你的数据源是直接从数据库查询返回的只读DataTable(比如用DataReader填充的),先复制一份可编辑的副本:

    // originalDt是你从数据库查询得到的原始DataTable
    DataTable editableDt = originalDt.Copy();
    
  2. 创建总计行并赋值
    用DataTable的NewRow()方法创建和原表结构一致的行,然后把你计算好的各列总计值填进去:

    DataRow totalRow = editableDt.NewRow();
    totalRow["date"] = "总计"; // 第一列显示“总计”标识
    totalRow["num_jobs_pending"] = yourPendingJobsTotal; // 替换成你计算好的该列总和
    totalRow["jobs_called"] = yourCalledJobsTotal;
    totalRow["total_jobs_overall"] = yourOverallJobsTotal;
    // 其他需要展示总计的列依次赋值
    
  3. 将总计行添加到数据源并绑定
    把总计行加到DataTable里,再重新绑定到DataGridView(如果已经绑定,DataTable的变更会自动同步到表格):

    editableDt.Rows.Add(totalRow);
    // 如果之前已经绑定过,这一步可以省略,表格会自动更新
    dataGridView1.DataSource = editableDt;
    

额外注意事项

  • 如果你的数据源用了BindingSource作为中间层,直接操作BindingSource关联的DataTable即可:
    BindingSource bs = (BindingSource)dataGridView1.DataSource;
    DataTable dt = (DataTable)bs.DataSource;
    // 按照上面的步骤给dt添加总计行即可,BindingSource会自动同步表格
    
  • 总计行只是用于展示,不要把它写回数据库,所以务必在内存中的DataTable里操作,不要直接修改数据库的原始表。

内容的提问来源于stack exchange,提问作者Squaddy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:06:22