Размещенный цикл и логика не выглядят корректно в отношении того, что вы должны делать….
… ”, это должно только поместить значение в строки со значением в столбцеА строки ”….
В настоящее время код использует один цикл for
для циклического перебора всех« строк »в сетке ...
for (int i = 0; i < dataGridView1.Rows.Count; i++)
Затем еще один for
цикл для прохождения всех «столбцов» в сетке…
for (int j = 0; j < dataGridView1.Columns.Count; j++)
Это будет проходить через ВСЕ ячейки в сетке… ЕСЛИ одна из ячеек в сеткеНЕ является нулевым…
if (dataGridView1.Rows[i].Cells[j].Value != null)
Затем (ОПЯТЬ?) переберите ВСЕ «строки» и установите значение третьего столбца в этой строке равным значению, содержащемуся в поле со списком….?
Это не похоже на то, что вы хотите.Оператор «break» просто пропускает столбцы «после» того, как «первое» значение найдено.Эта логика не приведет к достижению того, о чем вы просите.
Поэтому, чтобы упростить
, «следует помещать значение только в строки со значением в столбце A строки»
Это означает, что нам нужно только пройти по всем строкам.Нет необходимости циклически проходить по столбцам, и нам нужно сделать этот цикл только один раз.Логика ...
Перебрать все строки в каждой строке, если в столбце A (0) есть «значение», а затем добавить текст поля со списком в столбец C (2).Эта логика может выглядеть примерно так:
private void updateExcel_Click(object sender, EventArgs e) {
for (int i = 0; i < dataGridView1.RowCount; i++) {
if (!dataGridView1.Rows[i].IsNewRow &&
dataGridView1.Rows[i].Cells[0].Value != null &&
dataGridView1.Rows[i].Cells[0].Value.ToString() != "") {
dataGridView1[2, i].Value = ConsigneeCombo.Text;
}
}
}
Это добавит текст поля со списком только в третий столбец, если значение в первом столбце НЕ пустое.