2009-11-13 6 views
0

사용자가 이미 존재하는 고유 한 이름 열에 이름을 추가 할 때까지 제대로 작동하는 것처럼 보이는 datagridview가 있습니다.Vb.Net Datagridview 오류 처리

나는이 점점 오전은 :

System.Data.ConstraintException : 열 '이름'독특한로 제한됩니다. 값 'test'가 이미 있습니다.

이 오류를 캡처하여 사용자가 다른 이름 (대소 문자를 구분하지 않음)을 추가하지 못하게함으로써이 거대한 오류가 발생하지 않도록합니다.

감사합니다.

+0

나는 이런 짓을하고 내 문제 해결 : 개인 서브 dgv_DataError (개체로 ByVal의 보낸 사람, System.Windows.Forms.DataGridViewDataErrorEventArgs으로 ByVal의 전자) dgv.DataError \t있는 MsgBox (e.Exception.Message) 끝 처리를 Sub – ErocM

+0

음 ... 형식이 잘 안됐다. 알기를 원하는 사람들을 위해 datagridview1.DataError에서 오류를 발견했습니다. 당신은 try/catch를하지 않습니다. 나는 그 사건 내에서 e.exception으로 메시지를 표시했다. – ErocM

답변

0

데이터 소스의 OnSelected 이벤트, 특히 ExceptionExceptionHandled 이벤트 인수의 속성을 확인하십시오.

+0

나는 이것을 완전히 이해하고 있는지 확신하지 못한다. 나는 수동으로 채울 소스로 datatable을 만들고있다. OnSelected 이벤트에 어떻게 참여합니까? – ErocM

+0

걱정하지 마십시오. asp.net을 생각하고 있었지만 DataGridView는 winforms 컨트롤입니다. 그래서 이것은 실제로 당신에게 적용되지 않습니다. 다른 사람들이 같은 실수를 피할 수 있도록 삭제하는 대신 삭제하겠습니다. –

1

코드에서 ConstraintException 유형의 예외를 catch합니다 (삽입을 수행하는 비트 부근에 있는지 확인하십시오). 그 예외가 잡히면 친숙한 텍스트 "이름 'test'가 이미 있습니다. 다른 이름을 선택하십시오."

+0

내가 어떤 사건을 포착하고 있는지 말해 줄 수 있습니까? – ErocM

0

단순히 CellValidating 이벤트를 처리하고 같은 이름의 항목이 종료되는지 확인할 수 있습니다. 존재하는 경우 e.CancelTrue으로 설정하고이 행에 오류 메시지를 설정하십시오. 예 :

Private Sub dataGridView1_CellValidating(ByVal sender As Object, _ 
             ByVal e As DataGridViewCellValidatingEventArgs) _ 
             Handles dataGridView1.CellValidating 

    If ExistsItemWithName(e.FormattedValue.ToString) Then 
     e.Cancel = True 
     Me.dataGridView1.Rows(e.RowIndex).ErrorText = "An item with this name already exists" 
    End If 

최종 하위 당신이 CellValidating에 ErrorText을 설정하면, 당신은 또한 ErrorTextString.Empty에를 다시 설정하는 CellValidating을 처리해야

참고.