講述VB.NET Data Grid實現主/從數據表
在向大家詳細介紹VB.NET Data Grid之前,首先讓大家了解下實現DataGrid2的內容動態更新,然后全面介紹VB.NET Data Grid。
VB.NET Data Grid實現主/從數據表
更有效的解決方案是使用兩個VB.NET Data Grid控件,主、從表均可見。對主表上某行進行選擇,會立即引發從表內容的改變。
建立工程,添加一個Panel控件,將其Dock屬性設置為Top;添加一個Splitter控件,Dock屬性同樣設置為Top;在窗體下部再添加一個 Panel,Dock屬性為top.然后,在兩面板中各添加一個VB.NET Data Grid,其Dock屬性為Fill.
要實現DataGrid2的內容動態更新,需要對DataGrid1的CurrentCellChanged事件進行監聽,在接受到DataGrid1的變化消息后,加載相應的數據。
- 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值的從表數據
- 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)
- ’用選擇的從表數據填充,更新
- da.Dispose()
- cn.Close()
- DataGrid2.DataSource = Sales Table
- End Sub
- End Class
運行程序,在主表中選擇某行,從表就會顯示出匹配的銷售信息。
利用主/從數據表模式,能在較小的編程工作量下,實現很好的顯示及操作效果。若要建立多表關聯的主/從視圖,或是進行增、刪、改等操作,在此方法上進行改進即可。希望本文能給讀者在數據庫編程時帶來一定的啟示和幫助。
【編輯推薦】