Datagridview integer-column:无法删除现有值

时间:2014-02-03 11:13:39

标签: vb.net validation datagridview dbnull

更新:尝试使用相同的表,某些值等新DGV后,一切都很好......不知道为什么......

我有一个绑定到表的Datagridview(DGV)(DB中的表有几列[整数数据类型])

输入整数时输入:每一个都好 当没有输入整数时:发生dataerror并且我处理它

但是当我想删除现有的整数或将值保留为空时,数据错误也会出现。说""不是一个整数(好吧,我知道),但我怎么能处理这种情况,告诉他对待一个""作为dbnull.value还是删除现有值?

谢谢

CellValidating-事件:

Private Sub dgvBunker_4N_CellValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles dgvBunker_4N.CellValidating

    If sender.Rows(e.RowIndex).IsNewRow Then Return
    If e.FormattedValue Is DBNull.Value Then Return
    If e.FormattedValue = String.Empty Then Return

    Select Case e.ColumnIndex
        Case 2 To 4
            If Not IsNumeric(e.FormattedValue) Then
                e.Cancel = True
                sender.Rows(e.RowIndex).ErrorText = "Not a valid Number"
            End If
    End Select
End Sub

1 个答案:

答案 0 :(得分:2)

您可以尝试以下代码。如果value不是整数,则验证如果值为空或为空,则e.cancel = false

Private Sub dgvBunker_4N_CellValidating(ByVal sender As Object,
          ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs)
          Handles dgvBunker_4N.CellValidating

    If sender.Rows(e.RowIndex).IsNewRow Then Return
    If e.FormattedValue Is DBNull.Value Then Return
    If e.FormattedValue = String.Empty Then Return

    Select Case e.ColumnIndex
        Case 2 To 4
            If Not IsNumeric(e.FormattedValue) Then
                If e.FormattedValue = "" Or IsDBNull(e.FormattedValue) Then
                    e.Cancel = False
                Else
                    e.Cancel = True
                    sender.Rows(e.RowIndex).ErrorText = "Not a valid Number"
                End If
            End If
    End Select
End Sub