Можно ли зациклить на двух датагрид в vb.net - PullRequest
0 голосов
/ 02 июля 2019

Например, код:

For Each r As DataGridViewRow In datagrid1 and datagrid2
next

Мне просто нужно зацикливаться на двух видах сетки данных одновременно, чтобы напечатать отчет о кристалле

Ответы [ 2 ]

0 голосов
/ 02 июля 2019

Я успешно зациклил две таблицы данных одновременно, используя приведенный ниже код, предоставленный 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
0 голосов
/ 02 июля 2019

Важно понимать, что представляет собой каждый из различных циклов. Вы увидите, что ваш пример в этом случае бессмыслен, но есть варианты.

Во-первых, цикл - это конструкция кода, которая позволяет вам выполнить часть кода несколько раз. Это верно для всех петель. Разница заключается в том, как цикл решает, когда прекратить цикл.

Цикл For Each выполнит раздел кода один раз для каждого элемента в перечисляемом списке, предоставляя доступ к текущему элементу через переменную управления циклом. Например, вы можете перебрать коллекцию Rows для DataGridView, каждый раз получая доступ к текущей строке.

Если вы хотите обработать две сетки, вам нужно сначала понять, что это значит, чего вы не сделали здесь. Является ли намерение обрабатывать пары строк вместе, то есть по одной из каждой сетки по соответствующим индексам, или обрабатывать каждую строку индивидуально, независимо от источника? Если это первое, вы должны использовать For lop, а затем индексировать оба Rows набора счетчиком цикла, например,

For i = 0 To grid1.Rows.Count - 1
    Dim row1 = grid1.Rows(i)
    Dim row2 = grid2.Rows(i)

    '...
Next

Если это последнее, вам нужно создать единый список элементов из обеих сеток. Вы можете сделать это как часть оператора For Each, но это не имеет ничего общего с циклом, например,

For Each row In grid1.Rows.Cast(Of DataGridViewRow)().Concat(grid2.Rows.Cast(Of DataGridViewRow)())
    '...
Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...