Datagrid不显示新表单中的数据

时间:2015-07-28 12:10:59

标签: vb.net

我正在使用sqlexpress数据库开发一个简单的家庭卡vb.net应用程序。我很震惊,请帮忙: 当用户保存成员时,有两个字段1.出生日期,2。受洗日期。他可以跳过这两个。所以我使用以下语句:

If Not IsDate(DOBDatepik.Text) Then
                sqlcmd.Parameters.Add("@DOB", SqlDbType.DateTime).Value = DBNull.Value
            Else
                sqlcmd.Parameters.Add("@DOB", SqlDbType.DateTime).Value = DOBDatepik.Value
            End If

它有效。现在我用Datagrid创建新表单来查找族。这是一个语句当用户双击任何单元格时,新表单将显示当前记录。为此,我使用以下声明:

我没有复制整篇文章。这只是为了澄清

Private Sub familyGridView_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles familyGridView.CellDoubleClick

        Dim int As Integer = Me.familyGridView.CurrentCell.RowIndex
        FamilyDetails.DOBDatepik.Value = Me.familyGridView.Item(6, int).Value
        FamilyDetails.baptismDatepik.Value = Me.familyGridView.Item(12, int).Value
        FamilyDetails.Show()
    End Sub

它有效,但是如果有空日期,则会出现以下错误

Conversion from type 'DBNull' to type 'Date' is not valid.

所以请帮我解决这个问题。 Null Date没有从DataGrid传递到新表单,而表中作为二进制数据的Image在发送到新表单时也会出错。

1 个答案:

答案 0 :(得分:0)

当您将值传递给新的时,似乎就是问题。

您需要做的就是检查值是否为空。

例如:

If Not Me.familyGridView.Item(6, int).Value is DBNull.Value Then
    FamilyDetails.DOBDatepik.Value = Me.familyGridView.Item(6, int).Value
Else
    FamilyDetails.DOBDatepik.Value = nothing
End If
If Not Me.familyGridView.Item(12, int).Value is DBNull.Value Then
    FamilyDetails.baptismDatepik.Value = Me.familyGridView.Item(12, int).Value
Else
    FamilyDetails.baptismDatepik.Value = nothing
End If

希望这有帮助!