0

DatagridView 나는 데이터 체크 박스 열입니다. 그러나 여러 개의 확인란을 선택하거나 선택을 취소하면 모든 변경 사항이 저장되는 것은 아닙니다. (그것은 모든 메소드를 Set 메소드를 트리거하지 않으며 매 2 초마다 실행합니다.) 그러나 각 확인란을 클릭 한 후 다음 체크 박스 전에 다른 셀 (열)을 클릭하면 모든 작업이 Set 메서드를 트리거합니다. 그래서 셀 유효성 검사는 셀 단위로 작동하지 않지만 열 단위 기준으로 (checkboxcolumn의 경우) 작동하는 것으로 보입니다. 어떻게 이것을 해결합니까?Datagridview 확인란 열 확인

답변

0

당신이 시도한 것과 효과가없는 것이 무엇인지 분명하지 않습니다. Winform 응용 프로그램이 있고 SqlDataSource를 사용하여 SQL Server 테이블을 그리드에 바인딩한다고 가정합니다. 데이터베이스에는 부울 (비트) 필드가 있으므로 그리드는 자동으로 DataGridViewCheckBoxColumn을 생성합니다. 사용자가 저장 버튼을 클릭 할 때 사용자가 수행 한 모든 변경 사항을 저장하려고합니다.

이러한 모든 추측은 맞습니까?

데이터 어댑터/데이터 테이블을 dataadapter로 업데이트하기 만하면됩니다.

Private Sub BtnSaveChanges_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSaveChanges.Click 
    Me.FooTableAdapter.Update(DataSet1.Foo) 
End Sub 

MSD-예 : 변경 사항이 데이터베이스에 직접 저장해야하는 경우 http://msdn.microsoft.com/en-use/library/fbk67b6z.aspx

, 당신은 BindingSource에의 CurrentItemChanged-event를 처리 할 수 ​​있습니다.

Private Sub FooBindingSource_CurrentItemChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles FooBindingSource.CurrentItemChanged 
    Dim thisDataRow As DataRow = DirectCast(DirectCast(sender, BindingSource).Current, DataRowView).Row 
    If thisDataRow.RowState = DataRowState.Modified Then 
     Me.FooTableAdapter.Update(thisDataRow) 
    End If 
End Sub 
+0

감사합니다! 더 자세한 내용이 적절하지 않다고 생각했습니다. 그러나; DataGridview에서 엔티티 클래스 (Linq-to-SQL dbml 파일)의 개체를 표시하고 있습니다. 따라서이 속성은이 클래스의 부울 속성입니다. 열을 자동 생성하지는 않지만 Columns.Add (DataGridViewCheckBoxColumn)를 사용하여 지정합니다. 문제는, (DBml 파일에서) 속성의 Set 메서드에 중단 점을 넣었 기 때문에 호출 될 때 알았습니다. 문제는 서로의 직후에 두 개의 확인란을 클릭하는 것입니다. 그 중 하나의 설정 메소드 (첫 번째 메소드) 만 호출되고, datagridview에서는 시각적으로 두 조치 모두 체크 표시를 유발합니다. – bretddog

+0

죄송합니다. 귀하의 질문을 정확히 확인하지 못했습니다. Winforms 응용 프로그램 인 Sql Server Express 데이터 소스입니다. 데이터베이스에 저장하기 위해 저장소를 호출하는 bindingnavigator에 저장 단추가 있습니다. 하지만 문제는 SQL/데이터베이스 문제와 관련이 없다고 생각합니다. 그러나 단순히 부울 속성이 DataGridViewCheckBoxColumn에 의해 업데이트되는 방식입니다. (적어도 그것은 나에게 그렇게 보인다) – bretddog

+0

조금 더 명확한 설명 : 5 개의 빈 체크 박스가있는 경우, 그 중 모두를 체크하고 마지막으로 세이브 버튼을 누른다. "마지막"체크 박스는 체크 된대로 저장되지 않습니다. 그러나 마지막 체크 박스와 savebutton 사이에 다른 셀 (정확한 체크 박스 사각형 외부의 다른 열 또는 임의의 체크 상자 셀)을 클릭하면이 마지막 체크 또한 저장의 일부가됩니다. 그래서 문제는 상자가 검사 될 때 속성이 호출되지 않지만 DataGridView의 NEXT 동작에 있다는 것입니다. 그러나 다음 조치가 그 제어를 벗어나면 점검은 저장되지 않습니다. – bretddog