0

我想从 a 的 1 行获取数据DataGridView,我在文本框中选择这是我的代码,

Private Sub DataGridView1_CurrentCellChanged(sender As Object, e As EventArgs) Handles DataGridView1.CurrentCellChanged

    Dim dColums(0) As DataColumn
    dColums(0) = dsetmember.Tables("member").Columns(0)
    dsetmember.Tables("member").PrimaryKey = dColums

    'MessageBox.Show(DataGridView1.CurrentRow.Index, 1)
    If DataGridView1.CurrentRow.Index = -1 Then
        txtNamaMember.Text = ""
        txtKodeMember.Text = ""
        txtNoHP.Text = ""
    Else
        Dim dr As DataRow = dsetmember.Tables("member").Rows.Find(DataGridView1.Item(DataGridView1.CurrentRow.Index, 0))
        txtKodeMember.Text = dr(0)
    End If

End Sub

我得到这个错误,nullreferenceException was unhandled Object reference not set to an instance of an object.

谢谢b4。

4

2 回答 2

0

错误发生在将 dr(0) 分配给 textbox.Text 时。
这意味着Find方法没有找到传递的值,因此结果为 NULL。当 dr 为 Nothing 时尝试引用dr(0)就像写 NOTHING(0) 一样,当然,这会失败

Dim dr As DataRow = dsetmember.Tables("member").Rows.Find(DataGridView1.Item(DataGridView1.CurrentRow.Index, 0))
if dr IsNot Nothing then
    txtKodeMember.Text = dr(0)
else
    MessageBox.Show("Value not found")
End If

还请记住,Find 方法搜索在表的主键列上传递的值。您确定网格的第一列包含主键吗?

于 2013-04-28T09:49:28.463 回答
0

尝试改变这部分..

If DataGridView1.CurrentRow.Index = -1 Then
    txtNamaMember.Text = ""
    txtKodeMember.Text = ""
    txtNoHP.Text = ""
Else
    Dim dr As DataRow = dsetmember.Tables("member").Rows.Find(DataGridView1.Item(DataGridView1.CurrentRow.Index, 0))
    txtKodeMember.Text = dr.item(0)
End If
于 2013-04-28T13:54:25.007 回答