Обновление ячейки C # DataGridView не обновляет последнюю строку - PullRequest
1 голос
/ 03 апреля 2019

У меня есть кнопка, которая обновляет все значения в столбце 3 (C) (кроме заголовка) с учетом того, что было выбрано в поле со списком.

    private void updateExcel_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < dataGridView1.RowCount - 1; i++)
        {
            if (!RowIsEmpty(i))
            {
                dataGridView1[2, i].Value = Combo.Text;
            }
        }
    }

Это работает отдельно, но не обновляет последнюю строку.

RowIsEmpty:

    private bool RowIsEmpty(int rowIndex)
    {
        for (int i = 0; i < dataGridView1.ColumnCount; i++)
        {
            if (dataGridView1.Rows[rowIndex].Cells[i].Value != null &&
                dataGridView1.Rows[rowIndex].Cells[i].Value.ToString() != "")
            {
                return false;
            }
        }
        return true;
    }

1 Ответ

2 голосов
/ 03 апреля 2019

Я думаю, что ваша проблема в updateExcel_Click ..

Проблема, на мой взгляд, заключается в следующем:

for (int i = 0; i < dataGridView1.RowCount - 1; i++)

Поскольку вы здесь прыгаете по строкам, представьте, что dataGridView1.RowCount имеет значение 3, и вы делаете dataGridView1.RowCount - 1, поэтому dataGridView1.RowCount = 2.

При этом ваше желание будет работать 0, 1 и 2. Когда цель, с моей точки зрения, вы хотите, чтобы он запускал 0, 1, 2 и 3.

Проблема, о которой вы говорите в своем вопросе: не обновляет последнюю строку, потому что for переходит на последнюю строку ..

Решение:

private void updateExcel_Click(object sender, EventArgs e)
{
   for (int i = 0; i < dataGridView1.RowCount; i++)
   {
      if (!RowIsEmpty(i))
      {
          dataGridView1[2, i].Value = Combo.Text;
      }
   }
}

Или, если вы хотите сохранить логику, которая вам нужна, вам нужно на ваше усмотрение добавить это <, что-то вроде этого:

for (int i = 0; i <= dataGridView1.RowCount - 1; i++)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...