#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.