Imports System.Data.SqlClient Public Class Frm_01HF_finish_chem Dim cmd As New SqlCommand Dim da As New SqlDataAdapter Dim dt As New DataTable Dim sql As String Dim conn As New SqlConnection Private Sub Frm_01HF_finish_chem_Load(sender As Object, e As EventArgs) Handles MyBase.Load conn.ConnectionString = connstring conn.Open() sql = "select top(300) date as 日期 ,no as 单号,article as 品名,type as 分类 from ht_finish_chem group by date,no,article,type order by date desc" cmd.CommandText = sql cmd.Connection = conn da.SelectCommand = cmd da.Fill(dt) DataGridView1.DataSource = dt DataGridView1.RowTemplate.Height = 35 DataGridView1.Columns(0).Width = 120 DataGridView1.Columns(1).Width = 120 DataGridView1.Columns(2).Width = 180 DataGridView1.Columns(3).Width = 150 ' DataGridView1.Columns(4).Width = 120 ' 根据内容调整 DataGridView 大小 DataGridView2.Width = DataGridView2.PreferredSize.Width ' DataGridView1.Width = DataGridView2.PreferredSize.Width 'DataGridView2.Height = DataGridView2.PreferredSize.Height 'DataGridView2.AutoSize = True End Sub Private Sub DataGridView1_SelectionChanged(sender As Object, e As EventArgs) Handles DataGridView1.SelectionChanged sql = "SELECT TOP (100) HT_finish_chem.chem AS 品名, HT_Chem_Main.sys_name AS 系统品名, CAST(HT_finish_chem.percents AS numeric(10, 1)) AS 比例, HT_finish_chem.weight AS 重量, CASE WHEN chem = '水' THEN '水' ELSE type1 END AS 分类 FROM HT_finish_chem LEFT OUTER JOIN HT_Chem_Main ON HT_finish_chem.chem = HT_Chem_Main.in_use where date='" & DataGridView1.Rows(DataGridView1.CurrentCell.RowIndex).Cells("日期").Value & "'and HT_finish_chem.no= '" & DataGridView1.Rows(DataGridView1.CurrentCell.RowIndex).Cells("单号").Value & "' ORDER BY HT_finish_chem.weight DESC" cmd.CommandText = sql cmd.Connection = conn da.SelectCommand = cmd Dim dt1 As New DataTable da.Fill(dt1) ' 确保 DataTable 已填充到 DataGridView 中 Dim totalPercents As Double = 0 Dim totalWeight As Double = 0 ' 遍历 DataTable 中的所有行,累加比例和重量 For Each row As DataRow In dt1.Rows totalPercents += Convert.ToDouble(row("比例")) totalWeight += Convert.ToDouble(row("重量")) Next ' 在 DataTable 中添加一行,显示合计 Dim totalRow As DataRow = dt1.NewRow() totalRow("品名") = "合计" totalRow("比例") = totalPercents totalRow("重量") = totalWeight dt1.Rows.Add(totalRow) ' 刷新 DataGridView,显示新的合计行 DataGridView2.DataSource = dt1 ' 将最后一行设置为红色字体 Dim lastRowIndex As Integer = DataGridView2.Rows.Count - 2 With DataGridView2.Rows(lastRowIndex) .DefaultCellStyle.ForeColor = Color.Red ' 设置字体颜色为红色 .DefaultCellStyle.Font = New Font("Microsoft YaHei", 10, FontStyle.Bold) ' 加粗字体 .DefaultCellStyle.BackColor = Color.LightYellow ' 设置背景颜色为淡黄色 .ReadOnly = True ' 禁止编辑合计行 End With DataGridView2.Columns(1).Width = 120 DataGridView2.Columns(2).Width = 70 DataGridView2.Columns(3).Width = 70 DataGridView2.Columns(4).Width = 120 End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 'search sql = "select top(300) date as 日期 ,no as 单号,article as 品名,type as 分类 from ht_finish_chem where article like '%" & TextBox1.Text & "%' or type like '%" & TextBox1.Text & "%' group by date,no,article,type order by date desc" cmd.CommandText = sql cmd.Connection = conn da.SelectCommand = cmd dt = New DataTable da.Fill(dt) DataGridView1.DataSource = dt DataGridView1.RowTemplate.Height = 35 DataGridView1.Columns(0).Width = 120 DataGridView1.Columns(1).Width = 120 DataGridView1.Columns(2).Width = 180 DataGridView1.Columns(3).Width = 150 End Sub End Class