2016-11-04 2 views
-1

DataGridview에서 행을 삭제하려고하지만 해당 레코드의 맨 아래부터 일부만 삭제합니다. 모든 기록을 삭제해야합니다. 도와주세요! 여기 내 코드는 다음과 같습니다 :DataGridview의 행 삭제

For n As Int32 = DataGridView1.Rows.Count - 1 To 0 Step -1 
     Dim c As Boolean 
     c = DataGridView1.Rows(n).Cells(0).Value 
     If c = True Then 
      DataGridView1.Rows.RemoveAt(n) 
     Else 
     End If 
    Next n 

참고 :이 코드는 더 짧은 목록에서 작동하지만 큰 목록에서는 선택한 레코드 중 일부만 삭제합니다. 선택에 의해 "c = True"를 가진 레코드를 의미합니다

+1

뒤로 반복 ... RemoveAt를 수행 할 때 일어나는 일에 대해 생각해보십시오. 모든 것이 위로 이동하여 일부는 건너 뜁니다. 또한 DataTable에 바인딩 된 DGV 행을 제거해도 데이터에 아무런 영향을 미치지 않습니다. – Plutonix

+0

@Plutonix 그게 내가 이미하고있는 게 아니야 ??? 그렇다면 왜 작동하지 않습니까? – Chrisetiquette

+0

@LarsTech 나도 그렇게 생각 했어. – Chrisetiquette

답변

-1

삭제할 때 행을 건너 뛰지 않도록 위쪽에서 아래쪽으로 반복합니다.

For each row as DataRow in DataGridView1.Rows 
    Dim c As Boolean 
    c = isNumeric(row(0) 
    If c = True Then 
     DataGridView1.Rows.Remove(row) 
    Else 
    End If 
Next 

이 코드는 당신이 원했던대로 작동합니다.

+1

동시에 데이터row를 반복하고 제거하면 오류가 발생한다는 것을 알고 계십니까? –

+0

아니요.이 일을 한 번도 해본 적이 없지만, 이것이 효과가 있다고 생각했습니다. –

+3

죄송하지만 작동하지 않습니다. –