在向大家详细介绍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
运行程序,在主表中选择某行,从表就会显示出匹配的销售信息。
利用主/从数据表模式,能在较小的编程工作量下,实现很好的显示及操作效果。若要建立多表关联的主/从视图,或是进行增、删、改等操作,在此方法上进行改进即可。希望本文能给读者在数据库编程时带来一定的启示和帮助。
【编辑推荐】