講述VB.NET Data Grid實(shí)現(xiàn)主/從數(shù)據(jù)表
在向大家詳細(xì)介紹VB.NET Data Grid之前,首先讓大家了解下實(shí)現(xiàn)DataGrid2的內(nèi)容動(dòng)態(tài)更新,然后全面介紹VB.NET Data Grid。
VB.NET Data Grid實(shí)現(xiàn)主/從數(shù)據(jù)表
更有效的解決方案是使用兩個(gè)VB.NET Data Grid控件,主、從表均可見(jiàn)。對(duì)主表上某行進(jìn)行選擇,會(huì)立即引發(fā)從表內(nèi)容的改變。
建立工程,添加一個(gè)Panel控件,將其Dock屬性設(shè)置為Top;添加一個(gè)Splitter控件,Dock屬性同樣設(shè)置為Top;在窗體下部再添加一個(gè) Panel,Dock屬性為top.然后,在兩面板中各添加一個(gè)VB.NET Data Grid,其Dock屬性為Fill.
要實(shí)現(xiàn)DataGrid2的內(nèi)容動(dòng)態(tài)更新,需要對(duì)DataGrid1的CurrentCellChanged事件進(jìn)行監(jiān)聽(tīng),在接受到DataGrid1的變化消息后,加載相應(yīng)的數(shù)據(jù)。
- Imports System.Data.SqlClient
- Public Class Form1
- Const Connection String As String = "integrated security=sspi;initial catalog=pubs;
- data source=(local)"
- Private Sub Button1_Click(By Val sender As Object,
By Val e As System.EventArgs) Handles Button1.Click- Dim cn As New SqlConnection(Connection String)
- cn.Open()
- Dim ds As New Dataset
- Dim GetTitlesString As String = "Select * From Titles"
- Dim Titles Table As New Data Table("Titles")
- ds.Tables.Add(Titles Table)
- Dim da As New SqlDataAdapter(GetTitlesString, cn)
- da.Fill(Titles Table)
- da.Dispose()
- cn.Close()
- DataGrid1.DataSource = Titles Table
- ’主表顯示在DataGrid1中
- End Sub
- Private Sub DataGrid1_CurrentCellChanged(By Val sender As Object,
By Val e As System.EventArgs) Handles DataGrid1.CurrentCellChanged- Dim titled As String = DataGrid1.Item(DataGrid1.CurrentCell.RowNumber, 0).To String
- ’判斷用戶在主表中選擇了哪一行,取出它的第0列(在本例中即為title_id列)
- Dim sql As String = "select * from sales where title_id=’" & titled & "’"
- ’SQL命令字符串,選擇與主表中相同title_id值的從表數(shù)據(jù)
- Dim cn As New SqlConnection(Connection String)
- cn.Open()
- Dim ds As New Dataset
- Dim da As New SqlDataAdapter(sql, cn)
- Dim Sales Table As New Data Table("Sales")
- ds.Tables.Add(Sales Table)
- da.Fill(Sales Table)
- ’用選擇的從表數(shù)據(jù)填充,更新
- da.Dispose()
- cn.Close()
- DataGrid2.DataSource = Sales Table
- End Sub
- End Class
運(yùn)行程序,在主表中選擇某行,從表就會(huì)顯示出匹配的銷售信息。
利用主/從數(shù)據(jù)表模式,能在較小的編程工作量下,實(shí)現(xiàn)很好的顯示及操作效果。若要建立多表關(guān)聯(lián)的主/從視圖,或是進(jìn)行增、刪、改等操作,在此方法上進(jìn)行改進(jìn)即可。希望本文能給讀者在數(shù)據(jù)庫(kù)編程時(shí)帶來(lái)一定的啟示和幫助。
【編輯推薦】