参考代码
Dim cj As WinForm.ComboBox = e.Form.Controls("ComboBox1")
Dim dm As WinForm.ComboBox = e.Form.Controls("ComboBox2")
If cj.text <> Nothing AndAlso dm.text <> Nothing Then
Dim dt As DataTable = DataTables("箱单数据")
Dim drs = dt.Select("款号 = '" & dm.Text & "'and 合同号 like '%" & cj.Text & "%'", "_sortkey")
Dim ggs = dt.GetValues("规格", "款号 = '" & dm.Text & "'and 合同号 like '%" & cj.Text & "%'", "_sortkey")
Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
lvw.StopRedraw() '暂停绘制
lvw.Columns.Clear() '清除原来的列
lvw.Rows.Clear() '清除原来的行
lvw.View = ViewMode.Details '显示模式为详细信息
lvw.GridLines = True '显示网格线
Dim cls() As String = {"颜色","箱号"} '定义列名
Dim wds() As String = {120,100} '定义列宽
For i As Integer = 0 To cls.Length - 1 '增加列
Dim c As WinForm.ListViewColumn = lvw.Columns.Add()
c.Text = cls(i) '指定列标题
c.Name = cls(i) '指定列名
c.Width = wds(i) '指定列宽
Next
For Each gg As String In ggs
Dim c As WinForm.ListViewColumn = lvw.Columns.Add()
c.Text = gg
c.Name = gg
c.Width = 20
Next
cls = new String() {"箱数","数量"} '定义列名
wds = new String() {40,40} '定义列宽
For i As Integer = 0 To cls.Length - 1 '增加列
Dim c As WinForm.ListViewColumn = lvw.Columns.Add()
c.Text = cls(i) '指定列标题
c.Name = cls(i) '指定列名
c.Width = wds(i) '指定列宽
Next
Dim pdr As DataRow = Nothing
Dim xs As Double = 0
Dim xhs As String = ""
Dim sl As Double = 0
Dim pr As object = Nothing
For Each dr As DataRow In drs
If pdr Is Nothing OrElse pdr("规格") <> dr("规格") OrElse pdr("颜色") <> dr("颜色") Then
If pr IsNot Nothing Then
pr("箱号") = xhs.trim(",")
pr(pdr("规格")) = "√"
pr("箱数") = xs
pr("数量") = sl
End If
Dim r As WinForm.ListViewRow = lvw.Rows.Add() '增加一行
r("颜色") = dr("颜色")
xhs = dr("箱号")
xs = 1
sl = dr("数量")
pr = r
Else
xhs &= "," & dr("箱号")
xs += 1
sl += dr("数量")
End If
pdr = dr
Next
If pr IsNot Nothing Then
pr("箱号") = xhs.trim(",")
pr(pdr("规格")) = "√"
pr("箱数") = xs
pr("数量") = sl
End If
lvw.ResumeRedraw
End If