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