将数据从访问数据库获取到 DataGridView Vb.Net 时出错

本文关键字:Vb DataGridView Net 出错 获取 数据 访问 数据库 | 更新日期: 2023-09-27 17:57:10

当我单击数据网格视图中的项目以获取更多信息时遇到问题! 好吗?我的代码 :

Try
        If (DataGridView1.Rows.Count = 0) Then Return
        TextBox1.Text = String.Empty
        TextBox2.Text = String.Empty
        TextBox3.Text = String.Empty
        TextBox4.Text = String.Empty
        Dim id As String = DataGridView1(2, DataGridView1.SelectedRows(0).Index).Value
        Dim dt As DataTable = New DBConnect().selectdata(String.Format("SELECT items.ClientName, items.ClientAddress, items.ClientPhone, items.ClientCredit, items.ClientLastPay FROM items where items.ClientID = {0}", id))
        TextBox1.Text = dt.Rows(0)(0).ToString
        TextBox2.Text = dt.Rows(0)(1).ToString
        TextBox3.Text = dt.Rows(0)(2).ToString
        TextBox4.Text = dt.Rows(0)(3).ToString
        dt.Dispose()
        dt = Nothing
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try

通过调试错误在此行中:

Dim id As String = DataGridView1(2, DataGridView1.SelectedRows(0).Index).Value.ToString

这是我的完整源代码 http://up.dev-point.com/download279606.html

将数据从访问数据库获取到 DataGridView Vb.Net 时出错

当您需要指定在行和列中查找时,您正在尝试像数组一样访问 DataGridView。而不是

DataGridView1(2, DataGridView1.SelectedRows(0).Index).Value

你可以写

DataGridView1.Columns(2).Cells(DataGridView1.SelectedRows(0).Index).Value

但是,依靠 SelectedRows 并不是最好的方法。如果用户不小心选择了几行并单击了底部的行,该怎么办?

假设您的代码位于 CellClick 处理程序中

(sender As Object, e As DataGridViewCellEventArgs)

您应该使用 DataGridViewCellEventArgs 来判断您位于哪一行,而不是依赖于 SelectedRows:

Dim id As String = DataGridView1(e.RowIndex).Cells(2).Value