2011-10-31 4 views
0

私はvb.netのデータベースにはかなり新しいので、私はちょうどdatagridviewの使い方を学びました。イムは、接続してDataGridViewの表示のために私のコードの一部を示しvb.netテキストデータフィールドにレコードレコードをロードする

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 & dbSource 

    'alternative way of connection 
    'Dim fldr As String 
    'Environment is the user profile 
    'fldr = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "/AddressBook.mdb" 
    'dbSource = "Data Source = " & 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 

the interface

私は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(); 

あなたがデータソースを使用する場合は、最初それにグリッドをバインドしますDataSourceにデータを入力すると、.Currentプロパティを使用して選択した行を取得できます。

編集:コード内

間違い。これは "DataBoundItem"である必要があります。 "DataItem"ではありません。メモリから...文字列ctype(...,string)にキャストするか、.ToString()にコールする必要があります。

あなたがオブジェクトのリストにバインドする場合は、あなたが.Rowを呼び出す必要はありません、DataBoundItemは、実際のオブジェクト型になり、例えばCustomer

+0

は「のDataItem」System.Windows」のメンバではありません.Forms.DataGridViewRow '。 \tなぜですか? –

+0

DataBoundItemされている必要があります。 –

関連する問題