Member 13998781 Ответов: 2

Как удалить все пустые строки в datagirdview?


Я хотел бы удалить пустые строки из столбца. Вот то, что я пробовал, но не работает, я получаю ошибку как "использовать ключевое слово 'new' для создания экземпляра объекта"! Ваша помощь будет оценена по достоинству, спасибо.

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

For i= data.Rows.Count - 1 To 0 Step -1

Dim row As DataGridViewRow = data.Rows(i)

if (Not row.IsNewRow Andalso data.Rows(i).Cells(1).Value.Tostring() = "") Then

data.Rows.RemoveAt(i)

Else
End If

2 Ответов

Рейтинг:
5

Member 13998781

Я смог заставить его работать, используя этот подход...

For i= data.Rows.Count - 1 To 0 Step -1
If String.IsNullOrEmpty(row.cell(1).Value) Then
data.Rows.RemoveAt(i)

End If


Рейтинг:
15

Richard Deeming

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

For i = data.Rows.Count - 1 To 0 Step -1

(Если это не решит проблему, то вам нужно будет объяснить, что означает "не работает".)


Member 13998781

спасибо за записку. Я действительно пробовал это сделать, но получаю ошибку "Uncommitted new row cannot be deleted", где программа достигает по адресу: data.Rows.RemoveAt(i)
Спасибо!

Richard Deeming

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

Dim row As DataGridViewRow = data.Rows(i)
If Not row.IsNewRow AndAlso row.Cells(2).Value.ToString() Then
    data.Rows.RemoveAt(i)
End If

Member 13998781

Спасибо! это исправило ошибку. Я просто хочу удалить пустые строки только для этого столбца 2,но эта команда удалит и все остальные строки в других столбцах?!!

Richard Deeming

В этом нет никакого смысла. Вы либо удаляете строку, либо не удаляете ее. Вы не можете удалить часть строки!

Member 13998781

Вы правы! Но вот моя проблема: у меня есть 6 столбцов, которые все имеют данные, за исключением столбца 2, где некоторые строки не имеют никаких данных (пустые), мне нужно получить поездку этих пустых строк только в этом столбце. Я думал, что могу удалить только эти строки! есть ли какой-нибудь другой способ сдвинуть вверх все данные в столбце 2, чтобы между ними не было пустых строк? большое спасибо.

Richard Deeming

Пустая клетка-это не строка!

Вы можете удалить только всю строку (все столбцы). Вы не можете удалить часть строки.

Member 13998781

Я сделал изменения, теперь я получаю ошибку как "использовать ключевое слово 'new' для создания экземпляра объекта". Спасибо!

Member 13998781

Спасибо! Я посмотрю, смогу ли я подойти к этому по-другому!