Как удалить строку с одной или несколькими пустыми или нулевыми ячейками? - PullRequest
2 голосов
/ 13 мая 2010

У меня есть datagridview на моей winform. Я отображаю записи в datagridview. Теперь, после отображения записей в сетке данных, я хочу удалить строку из таблицы данных, в которой есть одна или несколько пустых ячеек, значение которых отсутствует в ячейке для этой строки. Поэтому для этого я проверяю каждую ячейку для каждой строки, если есть какая-либо ячейка пустая или пустая, затем я удаляю эти строки с помощью функции RemoveAt().

Мой код:

for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
            {
                for (int j = 0; j < dataGridView1.Columns.Count; j++)
                {
                    if (string.IsNullOrEmpty(dataGridView1.Rows[i].Cells[j].Value.ToString()))
                    {
                        dataGridView1.Rows.RemoveAt(i);
                        break;
                    }
                }
            }

Тогда проблема в том, что он не работает должным образом, что он не удаляет все строки, которые имеют пустую ячейку. Так что мне здесь делать?

1 Ответ

3 голосов
/ 13 мая 2010

Самый простой способ сделать то, что вы хотите, - это циклически перебирать строки таблицы данных в обратном порядке. Таким образом, ваши показатели остаются правильными.

for (int i = dataGridView1.Rows.Count -1; i >= 0; i--)
{
    DataGridViewRow dataGridViewRow = dataGridView1.Rows[i];

    foreach (DataGridViewCell cell in dataGridViewRow.Cells)
    {
        string val = cell.Value as string;
        if (string.IsNullOrEmpty(val))
        {
            if (!dataGridViewRow.IsNewRow)
            {
                dataGridView1.Rows.Remove(dataGridViewRow);
                break;
            }
        }            
    }
}

Я делаю пару дополнительных вещей, которые вам, возможно, не понадобятся (код просто вырезан и вставлен из моего тестового приложения)

  • Обычно я вписываю строку в объект DataGridViewRow.
  • Я проверяю свойство IsNewRow, потому что моя сетка была редактируемой.
  • Я присваиваю значение строковой переменной (с as для ее приведения), так как способ, которым вы его использовали, вызывал для меня исключение.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...