VB.NET WinForms 응용 프로그램에서 첫 번째 열의 바인딩되지 않은 열로 확인란이있는 DataGridView가 있습니다. 체크 박스가 선택된 각 행에 행 모음을 추가해야합니다.DataGridView 행을 반복 할 때 모든 행을 가져 오지 못함
For Each row As DataGridViewRow In dgvEmployees.Rows
Dim chkCell As DataGridViewCheckBoxCell = DirectCast(row.Cells(0), DataGridViewCheckBoxCell)
If Convert.ToBoolean(chkCell.Value) = True Then
Console.WriteLine("This should be the Emp No of the checked row: " & row.Cells(1).Value.ToString())
End If
Next
을하지만 체크 체크 박스와 마지막 행을 누락되었습니다
나는 행을 반복하고 체크 체크 박스를 가진 사람을 찾기 위해 아래의 코드를 사용하고 있습니다. 나는. 세 개의 체크 박스를 체크하면 콘솔 출력에서 처음 두 체크 된 행의 "Emp No"가 표시됩니다.
카운터를 사용하는 반복하고 제로 인덱싱에 문제처럼 행동했다, 나는 또한 시도 생각 :
For rowNum As Integer = 0 To dgvEmployees.Rows.Count - 1
Dim currentRow As DataGridViewRow = dgvEmployees.Rows(rowNum)
Dim chkCell As DataGridViewCheckBoxCell = DirectCast(currentRow.Cells(0), DataGridViewCheckBoxCell)
If Convert.ToBoolean(chkCell.Value) = True Then
Console.WriteLine("This should be the emp no of the checked row: " & currentRow.Cells(1).Value.ToString())
End If
Next
을하지만 그 코드와 같은 동작을 얻을. 정수 = 0 및 Rows.Count - 1, 등 주위를 변경 시도했지만 그 중 하나도 도움이되지 않았다.
중요한 경우 DataGridView의 SelectionMode를 CellSelect로 설정해야합니다.
UPDATE DataGridView에 의해 채워되고 있음을 테이블에 694 레코드가
.
은 내가 rows.count 값을 얻을 수있는 콘솔 출력을 추가 :Console.WriteLine("Num rows: " & dgvEmployees.Rows.Count)
을 인해 DataGridView에의 마지막 행에 의미가 695을 가지고 새 행의 항목을 허용하는이 .
나는 또한 첫째로, 바로 체크 체크 박스의 경우 검사 전에
Console.WriteLine("Row index: " & chkcell.RowIndex)
를 추가 - (1 번째 반복의 방법이 차지하는 것입니다하지만 백작은 생각했을 것이다.)
Num rows: 695
Row index: 0
this should be the emp no of the checked row: ACS175
Row index: 1
Row index: 2
this should be the emp no of the checked row: AJAW03
Row index: 3
Row index: 4
Row index: 5
Row index: 6
가 있었어야을에 "이 ...해야한다"출력 행의 인덱스 후 : 4 라인, 세 번째와 다섯 번째 행은 여기에 출력 뭔지 (0, 2, 4 인덱스)를 확인.
마지막으로 확인 된 행이 표의 마지막 행입니까? 디버거를 사용하여 단계별로 dgvEmployees.Rows.Count의 값이 그리드에 표시되는 행의 수와 일치하는지 확인할 수 있습니까? –
@CaseyWilkins, 그 덕분에, 반복 동안 행 수 및 인덱스 출력에 대한 세부 정보를 내 질문에 업데이트했습니다. – marky
디버거를 사용하여 처음 5 단계 또는 6 단계를 반복하면서 단계별로 chkCell.Value를 확인 했습니까? –