例如代码:
For Each r As DataGridViewRow In datagrid1 and datagrid2
next
我只需要一次循环访问两个数据网格视图即可在水晶报表上打印
答案 0 :(得分:0)
重要的是要了解每个不同的循环是和不是。您会发现您的示例在这种情况下是荒谬的,但是有很多选择。
首先,循环是一种代码构造,使您可以多次执行一段代码。所有循环都是如此。区别在于循环如何决定何时停止循环。
For Each
循环将为可枚举列表中的每个项目执行一次代码段,从而通过循环控制变量提供对当前项目的访问。例如,您可以循环访问Rows
的{{1}}集合,每次访问当前行。
如果要处理两个网格,则需要首先弄清楚这意味着什么,这里没有做。是否打算一起处理成对的行,即在对应索引处从每个网格中处理一对行,还是单独处理每一行,而与源无关?如果是前者,则可以使用DataGridView
翻录,然后通过循环计数器为两个For
集合建立索引,例如
Rows
如果是后者,则需要从两个网格中创建一个单项列表。您可以在For i = 0 To grid1.Rows.Count - 1
Dim row1 = grid1.Rows(i)
Dim row2 = grid2.Rows(i)
'...
Next
语句中执行此操作,但这与循环无关,例如
For Each
答案 1 :(得分:0)
我使用Sir.jmcilhinney提供的以下代码成功地一次循环了两个数据网格。
For i = 0 To vmc.dgReservation.Rows.Count - 1
Dim r = vmc.dgReservation.Rows(i)
Dim r2 = vmc.dgBilling.Rows(i)
Dim r3 = vmc.dgPayment.Rows(i)
dt.Rows.Add(r.Cells("Check In").Value, _
r.Cells("Check Out").Value, _
r.Cells("Room No.").Value, _
r.Cells("Nights").Value, _
r.Cells("Rate").Value, _
r2.Cells("Total Room Fee").Value, _
r2.Cells("Other Charges Total").Value, _
r3.Cells("Payment Method").Value, _
r3.Cells("Total Amt. Due").Value)
Next