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

如何在绑定Access的DataGridView最后一行添加列值总计(VB.NET)

在VB.NET中为DataGridView添加总计行的实现方案

嘿,我来帮你搞定这个需求!你在HTML里实现的总计行效果很直观,下面我给你两种实用的VB.NET实现方法,适配不同的场景:

方法一:修改绑定的DataTable(推荐,适合数据源绑定场景)

如果你是把Access数据库的数据填充到DataTable后绑定到DataGridView,那直接修改DataTable是最省心的——修改后DataGridView会自动同步显示:

步骤1:从Access获取并绑定数据

先把数据库里的数据读到DataTable,再绑定到控件:

' 替换成你的Access数据库路径和表名
Dim connString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\YourDatabase.accdb;"
Dim dataTable As New DataTable()

Using conn As New OleDbConnection(connString)
    Dim query As String = "SELECT Name, Data1, Data2 FROM YourTableName"
    Dim cmd As New OleDbCommand(query, conn)
    conn.Open()
    dataTable.Load(cmd.ExecuteReader())
End Using

' 绑定到DataGridView
DataGridView1.DataSource = dataTable

步骤2:计算数值列的总和

用LINQ快速计算Data1和Data2列的总和:

Dim totalData1 As Integer = dataTable.AsEnumerable().Sum(Function(row) row.Field(Of Integer)("Data1"))
Dim totalData2 As Integer = dataTable.AsEnumerable().Sum(Function(row) row.Field(Of Integer)("Data2"))

如果你的数值是小数类型,把Integer换成Decimal或者Double就行。

步骤3:添加总计行到DataTable

创建新行并填充总计值,再加入DataTable:

Dim totalRow As DataRow = dataTable.NewRow()
totalRow("Name") = "Total"
totalRow("Data1") = totalData1
totalRow("Data2") = totalData2
dataTable.Rows.Add(totalRow)

步骤4:设置总计行样式(和HTML效果一致)

给最后一行加灰色背景,在DataGridView的RowPostPaint事件里写代码:

Private Sub DataGridView1_RowPostPaint(sender As Object, e As DataGridViewRowPostPaintEventArgs) Handles DataGridView1.RowPostPaint
    ' 判断当前行是否是最后一行(总计行)
    If e.RowIndex = DataGridView1.Rows.Count - 1 Then
        DataGridView1.Rows(e.RowIndex).DefaultCellStyle.BackColor = Color.LightGray
    End If
End Sub

方法二:直接在DataGridView中添加行(不修改原始数据源)

如果不想改动绑定的DataTable(比如不想把总计行保存回数据库),可以直接给DataGridView手动加一行:

步骤1:先绑定数据(和方法一的步骤1一样)

步骤2:遍历计算总和

Dim totalData1 As Integer = 0
Dim totalData2 As Integer = 0

For Each row As DataGridViewRow In DataGridView1.Rows
    ' 排除控件自带的空行(如果允许用户添加新行的话)
    If Not row.IsNewRow Then
        totalData1 += Convert.ToInt32(row.Cells("Data1").Value)
        totalData2 += Convert.ToInt32(row.Cells("Data2").Value)
    End If
Next

步骤3:添加并设置总计行

' 添加新行
Dim rowIndex As Integer = DataGridView1.Rows.Add()
Dim totalRow As DataGridViewRow = DataGridView1.Rows(rowIndex)

' 填充总计值
totalRow.Cells("Name").Value = "Total"
totalRow.Cells("Data1").Value = totalData1
totalRow.Cells("Data2").Value = totalData2

' 设置灰色背景
totalRow.DefaultCellStyle.BackColor = Color.LightGray

小提示

  • 如果用户能编辑DataGridView里的数值,记得在CellValueChanged事件里重新计算总和并更新总计行,确保数值实时同步。
  • 如果你的列名或者数据类型不一样,记得对应调整代码里的字段名和类型哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:52:04