Member 12374765 Ответов: 1

Как я могу сравнить 2 datagridview с разными значениями


у меня есть два datagridview. dg1 имеет 3450 данных, в то время как dg2 имеет 3250 данных.если я нажму btnFilter, различные данные будут отображаться в другом datagridview. но теперь, как только я нажму кнопку, " индекс был вне диапазона. Должен быть неотрицательным и меньше размера коллекции. Имя параметра: index "появилось в строке If" DataGridView1.Rows(x). Cells(1). Value.Метод toString = dgBranch.Строки (x).ячейки(1). Значение.Тогда ToString"

Что я уже пробовал:

я пробовал этот код, но он возвращает индекс вне диапазона ошибки

Public Sub filter()
        Dim y As Integer = lblFilter.Text
        Form3.Label2.Text = Me.dgBranch.Rows(1).Cells(2).Value.ToString
        For x As Integer = DataGridView1.Rows.Count - 1 To 0 Step -1
            If DataGridView1.Rows(x).Cells(1).Value.ToString = dgBranch.Rows(x).Cells(1).Value.ToString Then
                If DataGridView1.Rows(x).Cells(y).Value.ToString <> dgBranch.Rows(x).Cells(y).Value.ToString Then
                    'MessageBox.Show(DataGridView1.Rows(x).Cells(1).Value.ToString + " " + dgBranch.Rows(x).Cells(1).Value.ToString + " " + DataGridView1.Rows(x).Cells(5).Value.ToString + " " + dgBranch.Rows(x).Cells(5).Value.ToString)
                    Form3.Show()
                    Form3.dgServer.Rows.Add(DataGridView1.Rows(x).Cells(0).Value, DataGridView1.Rows(x).Cells(1).Value.ToString, DataGridView1.Rows(x).Cells(3).Value.ToString, DataGridView1.Rows(x).Cells(4).Value.ToString, DataGridView1.Rows(x).Cells(5).Value.ToString)
                    Form3.dgBranch.Rows.Add(dgBranch.Rows(x).Cells(0).Value, dgBranch.Rows(x).Cells(1).Value.ToString, dgBranch.Rows(x).Cells(3).Value.ToString, dgBranch.Rows(x).Cells(4).Value.ToString, dgBranch.Rows(x).Cells(5).Value.ToString)
                End If
            Else
                MessageBox.Show("All Selected Items are the same!", "Filter", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If
        Next
    End Sub<pre>

1 Ответов

Рейтинг:
6

Michael_Davies

Если DGV имеют разное количество записей, то вы не можете использовать индекс большего DGV против меньшего.

dg1 может отсчитывать назад от 3450 строк, dg2 (dgbranch?) не имеет номера строки после 3249, поэтому индекс 3449 находится вне диапазона для этого DGV.

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


Member 12374765

Спасибо, сэр !