Usuário com melhor resposta
Datagridview - Erro com coluna tipo decimal

Pergunta
-
No meu datagridview, uma das colunas, vinculada diretamente à tabela, tem o tipo decimal(18,2).
Quando o usuário digita algo diferente de um valor numérico (ou deixa em branco), aparece um erro com a mensagem "A cadeia de caracteres de entrada não estava em um formato incorreto." (deve ser "não estava em formato correto", não?)
Aparece também: "No Source Available. The call stack contains only external code."
Acho que tem a ver com o formato.
Quero que nestes casos o valor seja 0.00, mas não sei como interceptar esse erro.
Tentei os eventos CellEndEdit e DataError, sem sucesso. Se alguém tiver uma solução, agradeço.
Respostas
-
Entendi,
Paulo então utilize o evento "CellValidating" veja exemplo :
Private Sub DataGridView1_CellValidating(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles DataGridView1.CellValidating If e.ColumnIndex = 0 Then Dim valor As Integer If Not Integer.TryParse(Convert.ToString(e.FormattedValue), valor) Then e.Cancel = True MessageBox.Show("Insira somente numerico !") Else 'seu valor sera inserido !! End If End If End Sub
- Marcado como Resposta Paulo 15 quarta-feira, 25 de junho de 2014 18:59
Todas as Respostas
-
-
Daniel, não deu certo. Acho que o evento KeyUp não chega a acontecer.
Private Sub DGV_Sucessores_KeyUp(sender As Object, e As KeyEventArgs) Handles DGV_Sucessores.KeyUp Try DGV_Sucessores.CurrentRow.Cells(0).Value = Double.Parse(DGV_Sucessores.CurrentRow.Cells(0).Value) Catch ex As Exception DGV_Sucessores.CurrentRow.Cells(0).Value = 0 End Try End Sub
Tentei também com CellLeave e CellParsing.
Quando, por exemplo, digito uma letra na célula que deveria ser de número e avanço para outra célula, o erro abre uma guia no projeto, chamada No Source Available.
-
Entendi,
Paulo então utilize o evento "CellValidating" veja exemplo :
Private Sub DataGridView1_CellValidating(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles DataGridView1.CellValidating If e.ColumnIndex = 0 Then Dim valor As Integer If Not Integer.TryParse(Convert.ToString(e.FormattedValue), valor) Then e.Cancel = True MessageBox.Show("Insira somente numerico !") Else 'seu valor sera inserido !! End If End If End Sub
- Marcado como Resposta Paulo 15 quarta-feira, 25 de junho de 2014 18:59
-