VB.NET还是比较常用的,于是我研究了一下VB.NET Data Grid,在这里拿出来和大家分享一下,希望对大家有用。
在以数据库为中心的应用程序中,主/从数据表视图是一种非常常见的设计模式。在这种模式下,***数据(主表)显示在一个用户界面元素中(如VB.NET Data Grid),而与之相关的细节数据(从表)则根据主表的选择作相应的变化更新。例如:我们可以查看出版社已出版图书的信息列表,当选择某种图书时,在从表中立即显示出该图书的销售情况。
VB.NET Data Grid实现主/从数据表模式一般有两种方式,一是利用一个VB.NET Data Grid控件装入两个相关的数据表,二是采用两个VB.NET Data Grid控件实现主从模式。为便于说明,我们采用SQL Server 2000自带的Pubs数据库的Titles表和Sales表进行演示,其中Titles表记录了某出版社的图书目录,而Sales表则是每种图书的销售数据,两张表中都包含title_id列。
一个VB.NET Data Grid中装入多个相关表
我们都知道,将VB.NET Data Grid的Data Source属性同Dataset相绑定,即可将数据表显示在VB.NET Data Grid中,但不少初学者并不清楚:通过向Dataset中添加多个Data Table对象,每个Data Table对象装入一张表,再设定好关联,即可在VB.NET Data Grid中显示多张关联表。
- 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()
- ’建立同数据库的连接
- Dim ds As New Dataset("Book Sales")
- ’创建Dataset对象
- Dim Titles Table As New Data Table("Titles")
- ds.Tables.Add(Titles Table)
- ’创建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)
- ’创建并填充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)
- 根据title_id列建立两个表的关联
- DataGrid1.DataSource = ds
- 将DataGrid1绑定到Dataset对象(即ds)
- End Sub
- End Class
需要注意的是:在单表模式下,用SqlDataAdapter对象填充Dataset时,若发现Dataset中没有表,就自动创建一个新的 Data Table并填充;而用主从模式时,应显示创建每个Data Table对象并填充,再利用Data Relation对象建立多个Data Table之间的关联,***将VB.NET Data Grid绑定到Dataset上。
运行工程,会看到一个有加号按钮的视图。单击加号,窗体中出现装入的所有表名。如果查看Titles表,就会发现在每行的旁边有一个小加号按钮,点击加号,就可以查看其销售情况。
在窗体的右上部,向左的小箭头按钮用于回退。每查看一次销售情况后,都必须用回退按钮回到主表,显然,这种主/从表模式的可操作性很差,也不太符合我们的操作习惯。也许,后一种方式是比较好的解决方案。
【编辑推荐】