vbnet分组网格 vbnet数组( 四 )


要在设计时实现一个 DataGrid 控件
1. 为要访问的数据库创建一个 Microsoft 数据链接 (.MDL) 文件 。请参阅“创建 Northwind OLE DB 数据链接”主题,以获得一个示例 。
2. 在窗体上放置一个 ADO Data 控件,并将其 ConnectionString 属性设置为在第 1 步中所创建的OLE DB 数据源 。
3. 在这个 Ado Data 控件的 RecordSource 属性中输入一条将返回一个记
录集的 SQL 语句 。例如,Select * From MyTableName Where CustID = 12
4. 在窗体上放置一个 DataGrid 控件,并将其 DataSource 属性设置为这个 ADO Data 控件 。
5. 右键单击该 DataGrid 控件 , 然后单击“检索字段” 。
6. 右键单击该 DataGrid 控件,然后单击“编辑” 。
7. 重新设置该网格的大小、删除或添加网格的列 。
8. 右键单击该 DataGrid 控件 , 然后单击“属性” 。
9. 使用“属性页”对话框来设置该控件的适当的属性,将该网格配置为所需的外观和行为 。
在运行时更改显示的数据
在创建了一个使用设计时特性的网格后,也可以在运行时动态地更改该网格的数据源 。下面介绍实现这一功能的通常方法 。
更改 DataSource 的RecordSource
更改所显示的数据的最通常方法是改变该 DataSource 的查询 。例如 , 如果DataGrid 控件使用一个ADO Data控件作为其 DataSource,则重写RecordSource和刷新该ADO Data 控件都将改变所显示的数据 。
' ADO Data 控件连接的是 Northwind 数据库的' Products 表 。新查询查找所有
' SupplierID = 12 的记录 。
Dim strQuery As String
strQuery = "SELECT * FROM Suppliers WHERE SupplierID = 12"
Adodc1.RecordSource = strQuery
Adodc1.Refresh
更改 DataSource
在运行时,可以将 DataSource 属性重新设置为一个不同的数据源 。例如,您可能具有若干个 ADO Data 控件,每个控件连接不同的数据库,或设置为不同的 RecordSource 属性 。可以简单地将 DataSource 从一个 ADO Data控件重新设置为另一个 ADO Data 控件:
' 将 DataSource 重新设置为一个连接到 Pubs 数据库的、
' 使用 Authors 表的 ADO Data 控件 。
Set DataGrid1.DataSource = adoPubsAuthors
重新绑定 DataSource
当将 DataGrid 控件用于一个远程数据库,诸如 SQLServer 时 , 可以改变表的结构 。例如,可以给这个表添加一个字段 。在这种情形下,可以调用Rebind 方法根据新的结构来重新创建该网格 。注意,如果已经在设计时改变了这个列的布局,DataGrid 控件将会试图重新创建当前的布局,包括任何空的列 。不过,通过首先调用 ClearFields 方法,可以强制该网格重新设置所有的列 。
从 DataGrid 返回值
在 DataGrid 被连接到一个数据库后,可能想要监视用户单击了哪一个单元 。可以使用 RowColChange 事件——而不是 Click 事件 。如下所示:
Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
' 显示用户所单击的单元的文字、行和列的信息 。
Debug.Print DataGrid1.Text; DataGrid1.Row; DataGrid1.Col
End Sub
使用 CellText 和 CellValue 方法
当一个列使用 NumberFormat 属性设置格式后,CellText 和 CellValue 属性是很有用的 。NumberFormat 属性不必更改实际的数据格式就可以更改任何包含数字的列的格式 。例如,给定一个网格,其中包含一个名为 ProductID的、包含整数的列 。下面的代码将使 DataGrid 以"P-0000" 的格式来显示数据 。换句话说,尽管在 ProductID 字段中所包含的实际数值为 "3",但该网格所显示的值将是 "P-0003" 。
Private Sub Form_Load()
DataGrid1.Columns("ProductID").NumberFormat = "P-0000"
End Sub
要返回数据库中所包含的实际值 , 应使用 CellValue 方法,如下所示:

推荐阅读