vb.net загрузка данных записи в текстовое поле

#vb.net #datagridview

#vb.net #datagridview

Вопрос:

я довольно новичок в базах данных в vb.net и я только что узнал, как использовать datagridview. я собираюсь показать часть моего кода для подключения и отображения datagridview

 Public Class Form1


Dim con As New OleDb.OleDbConnection
Dim dbProvider As String
Dim dbSource As String

Dim ds As New DataSet 'holds table data
Dim da As OleDb.OleDbDataAdapter 'connection to database connectionobject
Dim sql As String

Dim inc As Integer
Dim MaxRows As Integer


 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    dbProvider = "PROVIDER=Microsoft.Jet.OLEDB.4.0;"
    dbSource = "Data Source = C:/AddressBook.mdb"

    con.ConnectionString = dbProvider amp; dbSource

    'alternative way of connection
    'Dim fldr As String
    'Environment is the user profile
    'fldr = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) amp; "/AddressBook.mdb"
    'dbSource = "Data Source = " amp; fldr

    con.Open()
    MsgBox("Database is now Open")

    sql = "select * from tblContacts"
    da = New OleDb.OleDbDataAdapter(sql, con)
    da.Fill(ds, "Addressbook")


    con.Close()
    MsgBox("Database is now Closed")



    MaxRows = ds.Tables("AddressBook").Rows.Count
    inc = -1
    MsgBox(MaxRows)

    TextBox1.Text = inc

    DataGridView1.DataSource = ds
    DataGridView1.DataMember = "AddressBook"

End Sub     

End Class
  

интерфейс

я хочу отобразить в текстовом поле первое имя, основанное на том, где находится указатель, после того, как я нажал Button1, как мне это сделать? спасибо за ответы!

Ответ №1:

Вам нужно получить это значение из самой таблицы данных, а затем отобразить его в форме. Есть и другие способы, но попробуйте этот (и добавьте нулевые проверки!):

 Dim row as DataRow = CType(DataGridView1.CurrentRow.DataBoundItem, DataRowView).Row
myTextBox.Text = row["firstName"].ToString();
  

C#

 var row = ((DataRowView)dataGridView1.CurrentRow.DataBoundItem).Row;
myTextBox.Text = row["firstName"].ToString();
  

Поочередно:

Если вы используете источник данных и сначала привязываете к нему сетку, а затем заполняете источник данных данными, вы можете использовать .Current свойство для получения выбранной строки.

Редактировать:

Ошибка в коде. Это должно быть «DataBoundItem». Не «элемент данных». Из памяти… Кроме того, вам нужно преобразовать в строку ctype(...,string) или вызвать .ToString() .

Если вы привязываетесь к списку объектов, то вам не нужно будет вызывать .Row DataBoundItem будет фактическим типом объекта, например Customer

Комментарии:

1. ‘DataItem’ не является членом ‘System. Windows. Формы. DataGridViewRow’. почему это так?

2. Должно было быть DataBoundItem.