VB.NET 2008/VB - 데이터 그리드 뷰

DataGridView의 DataGridViewCheckBoxColumn의 체크값 확인 이벤트

본클라쓰 2012. 6. 14. 11:14

 

DataGridView에 CheckBox 컬럼을 추가했습니다. CheckBox 컬럼에 체크여부에 따른 이벤트를 처리하고 합니다.

 

그림) 데이터 그리드 뷰의 CheckBox 컬럼을 클릭하면 체크된 건수가 표시되는 예

 

 

데이터 그리드뷰의 셀을 클릭할 때 발생하는 이벤트는 CellClick, CellContentClick 이벤트가 있습니다.

 

이 이벤트를 사용해 셀이 클릭되었는지 여부를 확인할 수 있습니다. 하지만 체크값이 변경되는 것과는 상관이 없습니다. CellClick 이벤트는 값이 변경되기 전에 발생하고, CellContentClick은 값이 업데이트된 후에 발생합니다. 하지만 값이 업데이트되었다고 값을 가져올 때 업데이트된 값을 가져오는 것이 아닙니다. 즉, 변경된 값을 데이터그리드뷰에 적용해야 합니다. 그리고 데이터그리드뷰에 값이 변경되면 CellValueChanged 이벤트가 발생합니다.

 

만약 위 예제처럼 체크된 수를 표기할 때는 위 이벤트를 활요하여 값을 가져옵니다.

 

 

Private Sub DataGridView1_CellClick(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) _

Handles DataGridView1.CellContentClick

    ' 체크박스 처리(셀 중 0번 인덱스만 처리합니다.)
    If (e.ColumnIndex = 0) Then
        DataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit)
        GetCheckedListCount()
    End If

End Sub

 

 

위 코드에서 중요한 것은 CommitEdit 메소드를 호출하는 것입니다. 변경된 값을 데이터그리드뷰에 반영합니다.

 

 

' 체크된 리스트를 반환합니다. 
Private Sub GetCheckedListCount()

 

    Dim count As Integer = 0
    For Each row As DataGridViewRow In Me.DataGridView1.Rows
        If (row.Cells(0).Value = True) Then
            count = count + 1
        End If
    Next

    
Me.labCheckCount.Text = "총 " & count & "건"


End Function