詳細(xì)講解VB.NET Data Grid
VB.NET還是比較常用的,于是我研究了一下VB.NET Data Grid,在這里拿出來和大家分享一下,希望對(duì)大家有用。
在以數(shù)據(jù)庫為中心的應(yīng)用程序中,主/從數(shù)據(jù)表視圖是一種非常常見的設(shè)計(jì)模式。在這種模式下,***數(shù)據(jù)(主表)顯示在一個(gè)用戶界面元素中(如VB.NET Data Grid),而與之相關(guān)的細(xì)節(jié)數(shù)據(jù)(從表)則根據(jù)主表的選擇作相應(yīng)的變化更新。例如:我們可以查看出版社已出版圖書的信息列表,當(dāng)選擇某種圖書時(shí),在從表中立即顯示出該圖書的銷售情況。
VB.NET Data Grid實(shí)現(xiàn)主/從數(shù)據(jù)表模式一般有兩種方式,一是利用一個(gè)VB.NET Data Grid控件裝入兩個(gè)相關(guān)的數(shù)據(jù)表,二是采用兩個(gè)VB.NET Data Grid控件實(shí)現(xiàn)主從模式。為便于說明,我們采用SQL Server 2000自帶的Pubs數(shù)據(jù)庫的Titles表和Sales表進(jìn)行演示,其中Titles表記錄了某出版社的圖書目錄,而Sales表則是每種圖書的銷售數(shù)據(jù),兩張表中都包含title_id列。
一個(gè)VB.NET Data Grid中裝入多個(gè)相關(guān)表
我們都知道,將VB.NET Data Grid的Data Source屬性同Dataset相綁定,即可將數(shù)據(jù)表顯示在VB.NET Data Grid中,但不少初學(xué)者并不清楚:通過向Dataset中添加多個(gè)Data Table對(duì)象,每個(gè)Data Table對(duì)象裝入一張表,再設(shè)定好關(guān)聯(lián),即可在VB.NET Data Grid中顯示多張關(guān)聯(lián)表。
- Imports System.Data.SqlClient
- ’引用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()
- ’建立同數(shù)據(jù)庫的連接
- Dim ds As New Dataset("Book Sales")
- ’創(chuàng)建Dataset對(duì)象
- Dim Titles Table As New Data Table("Titles")
- ds.Tables.Add(Titles Table)
- ’創(chuàng)建Data Table對(duì)象(Titles表),加入Dataset
- Dim GetTitlesString As String = "Select * From Titles"
- Dim da As New SqlDataAdapter(GetTitlesString, cn)
- da.Fill(Titles Table)
- ’填充Data Table
- da.Dispose()
- Dim Sales Table As New Data Table("Sales")
- ds.Tables.Add(Sales Table)
- Dim GetSalesString As String = "Select * From Sales"
- da = New SqlDataAdapter(GetSalesString, cn)
- da.Fill(Sales Table)
- ’創(chuàng)建并填充Sales表
- da.Dispose()
- cn.Close()
- Dim relation As New Data Relation("Title Sales", TitlesTable.
Columns("title_id"),SalesTable.Columns("title_id"))- ds.Relations.Add(relation)
- 根據(jù)title_id列建立兩個(gè)表的關(guān)聯(lián)
- DataGrid1.DataSource = ds
- 將DataGrid1綁定到Dataset對(duì)象(即ds)
- End Sub
- End Class
需要注意的是:在單表模式下,用SqlDataAdapter對(duì)象填充Dataset時(shí),若發(fā)現(xiàn)Dataset中沒有表,就自動(dòng)創(chuàng)建一個(gè)新的 Data Table并填充;而用主從模式時(shí),應(yīng)顯示創(chuàng)建每個(gè)Data Table對(duì)象并填充,再利用Data Relation對(duì)象建立多個(gè)Data Table之間的關(guān)聯(lián),***將VB.NET Data Grid綁定到Dataset上。
運(yùn)行工程,會(huì)看到一個(gè)有加號(hào)按鈕的視圖。單擊加號(hào),窗體中出現(xiàn)裝入的所有表名。如果查看Titles表,就會(huì)發(fā)現(xiàn)在每行的旁邊有一個(gè)小加號(hào)按鈕,點(diǎn)擊加號(hào),就可以查看其銷售情況。
在窗體的右上部,向左的小箭頭按鈕用于回退。每查看一次銷售情況后,都必須用回退按鈕回到主表,顯然,這種主/從表模式的可操作性很差,也不太符合我們的操作習(xí)慣。也許,后一種方式是比較好的解決方案。
【編輯推薦】