проверьте, есть ли повторяющиеся значения в 2 datagridview

#c#

#c#

Вопрос:

Я пытаюсь сравнить строки и столбцы с 2 datagridview. Первый столбец s1 в (DGV1) обнаружил повторяющиеся значения в s1 (DGV2). Второй столбец s2 в (DGV1) не соответствует второму столбцу s2 в (DGV2). Что не так с кодом?

 for (int i = 0; i < dataGridView1.RowCount ; i  )
 {
   for (int j = 0; j < dataGridView2.RowCount; j  )
       {
         if ( dataGridView1.Rows[i].Cells[0].Value.ToString() == 
              dataGridView2.Rows[j].Cells[0].Value.ToString())
            { 
               dataGridView1.Rows[i].Cells[0].Style.BackColor = 
               Color.Yellow;
               dataGridView2.Rows[j].Cells[0].Style.BackColor = 
               Color.YellowGreen;
            }
       }     
  }
  

введите описание изображения здесь

Комментарии:

1. Ваш алгоритм никогда не докажет второй столбец. На самом деле это проверяет только первый столбец. Чтобы получить значения второго столбца, который вы должны изменить dataGridView1.Rows[i].Cells[0].Value.ToString() dataGridView1.Rows[i].Cells[1].Value.ToString() . Или лучше: выполните цикл также через все столбцы с циклом for dataGridView1.ColumnCount .

Ответ №1:

попробуй это

 for (int i = 0; i < dataGridView1.RowCount ; i  )
 {
   for (int j = 0; j < dataGridView2.RowCount; j  )
       {
         if ( (dataGridView1.Rows[i].Cells[0].Value.ToString() == 
               dataGridView2.Rows[j].Cells[0].Value.ToString()) amp;amp;
              (dataGridView1.Rows[i].Cells[1].Value.ToString() == 
               dataGridView2.Rows[j].Cells[1].Value.ToString()) )

            { 
               dataGridView1.Rows[i].Cells[0].Style.BackColor = 
               Color.Yellow;
               dataGridView1.Rows[i].Cells[1].Style.BackColor = 
               Color.Yellow;
               dataGridView2.Rows[j].Cells[0].Style.BackColor = 
               Color.YellowGreen;
               dataGridView2.Rows[j].Cells[1].Style.BackColor = 
               Color.YellowGreen;
            }
       }     
  }
  

Комментарии:

1. Тоже не работает. Спасибо за твои усилия, Дханушка, но проблема все еще существует…

Ответ №2:

 foreach (DataGridViewRow row1 in table1.Rows) //LOOP ROWS TABLE 1
{
    foreach (DataGridViewCell cell1 in row1.Cells) //LOOP COLUMNS TABLE 1
    {
        foreach (DataGridViewRow row2 in table2.Rows) //LOOP ROWS TABLE 2
        {
            foreach (DataGridViewCell cell2 in row2.Cells) //LOOP COLUMNS TABLE 2
            {
                if (cell1.Value != null amp;amp; cell2.Value != nullamp;amp; cell2.Value.ToString() == cell1.Value.ToString())
                {
                    cell1.Style.BackColor = Color.Yellow;
                    cell2.Style.BackColor = Color.YellowGreen;
                }
            }
        }
    }
}
  

Привет, Marcel16, это должно решить вашу проблему:

введите описание изображения здесь

Комментарии:

1. это работает особенно хорошо, Мар Тин!! ваш алгоритм основан на 2 строках и 2 столбцах. однажды я позволил себе увеличить строки в DGV2, но возникает ошибка, если ряд строк добавлен в DGV2. однако я хотел бы поблагодарить вас за вашу работу и поддержку!