VB的Datagrid控件的使用.docx
- 文档编号:4637204
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:16
- 大小:27.18KB
VB的Datagrid控件的使用.docx
《VB的Datagrid控件的使用.docx》由会员分享,可在线阅读,更多相关《VB的Datagrid控件的使用.docx(16页珍藏版)》请在冰豆网上搜索。
VB的Datagrid控件的使用
使用DataGrid控件
DataGrid控件是一种类似于电子数据表的绑定控件,可以显示一系列行和列来表示Recordset对象的记录和字段。
可以使用DataGrid来创建一个允许最终用户阅读和写入到绝大多数数据库的应用程序。
DataGrid控件可以在设计时快速进行配置,只需少量代码或无需代码。
当在设计时设置了DataGrid控件的DataSource属性后,就会用数据源的记录集来自动填充该控件,以及自动设置该控件的列标头。
然后您就可以编辑该网格的列;删除、重新安排、添加列标头、或者调整任意一列的宽度。
在运行时,可以在程序中切换DataSource来察看不同的表,或者可以修改当前数据库的查询,以返回一个不同的记录集合。
注意DataGrid控件与VisualBasic5.0中的DBGrid是代码兼容的,除了一个例外:
DataGrid控件不支持DBGrid的“解除绑定模式”概念。
DBGrid控件包括在VisualBasic的Tools目录中。
可能的用法
查看和编辑在远程或本地数据库中的数据。
与另一个数据绑定的控件(诸如DataList控件)联合使用,使用DataGrid控件来显示一个表的记录,这个表通过一个公共字段链接到由第二个数据绑定控件所显示的表。
使用DataGrid控件的设计时特性
可以不编写任何代码,只通过使用DataGrid控件的设计时特性来创建一个数据库应用程序。
下面的说明概要地说明了在实现DataGrid控件的典型应用时的一般步骤。
完整的循序渐进的指示,请参阅主题“DataGrid方案1:
使用DataGrid控件创建一个简单数据库应用程序”。
要在设计时实现一个DataGrid控件
1.为要访问的数据库创建一个Microsoft数据链接(.MDL)文件。
请参阅“创建NorthwindOLEDB数据链接”主题,以获得一个示例。
2.在窗体上放置一个ADOData控件,并将其ConnectionString属性设置为在第1步中所创建的OLEDB数据源。
3.在这个AdoData控件的RecordSource属性中输入一条将返回一个记
录集的SQL语句。
例如,Select*FromMyTableNameWhereCustID=12
4.在窗体上放置一个DataGrid控件,并将其DataSource属性设置为这个ADOData控件。
5.右键单击该DataGrid控件,然后单击“检索字段”。
6.右键单击该DataGrid控件,然后单击“编辑”。
7.重新设置该网格的大小、删除或添加网格的列。
8.右键单击该DataGrid控件,然后单击“属性”。
9.使用“属性页”对话框来设置该控件的适当的属性,将该网格配置为所需的外观和行为。
在运行时更改显示的数据
在创建了一个使用设计时特性的网格后,也可以在运行时动态地更改该网格的数据源。
下面介绍实现这一功能的通常方法。
更改DataSource的RecordSource
更改所显示的数据的最通常方法是改变该DataSource的查询。
例如,如果DataGrid控件使用一个ADOData控件作为其DataSource,则重写RecordSource和刷新该ADOData控件都将改变所显示的数据。
'ADOData控件连接的是Northwind数据库的'Products表。
新查询查找所有
'SupplierID=12的记录。
DimstrQueryAsString
strQuery="SELECT*FROMSuppliersWHERESupplierID=12"
Adodc1.RecordSource=strQuery
Adodc1.Refresh
更改DataSource
在运行时,可以将DataSource属性重新设置为一个不同的数据源。
例如,您可能具有若干个ADOData控件,每个控件连接不同的数据库,或设置为不同的RecordSource属性。
可以简单地将DataSource从一个ADOData控件重新设置为另一个ADOData控件:
'将DataSource重新设置为一个连接到Pubs数据库的、
'使用Authors表的ADOData控件。
SetDataGrid1.DataSource=adoPubsAuthors
重新绑定DataSource
当将DataGrid控件用于一个远程数据库,诸如SQLServer时,可以改变表的结构。
例如,可以给这个表添加一个字段。
在这种情形下,可以调用Rebind方法根据新的结构来重新创建该网格。
注意,如果已经在设计时改变了这个列的布局,DataGrid控件将会试图重新创建当前的布局,包括任何空的列。
不过,通过首先调用ClearFields方法,可以强制该网格重新设置所有的列。
从DataGrid返回值
在DataGrid被连接到一个数据库后,可能想要监视用户单击了哪一个单元。
可以使用RowColChange事件——而不是Click事件。
如下所示:
PrivateSubDataGrid1_RowColChange(LastRowAsVariant,ByValLastColAsInteger)
'显示用户所单击的单元的文字、行和列的信息。
Debug.PrintDataGrid1.Text;DataGrid1.Row;DataGrid1.Col
EndSub
使用CellText和CellValue方法
当一个列使用NumberFormat属性设置格式后,CellText和CellValue属性是很有用的。
NumberFormat属性不必更改实际的数据格式就可以更改任何包含数字的列的格式。
例如,给定一个网格,其中包含一个名为ProductID的、包含整数的列。
下面的代码将使DataGrid以"P-0000"的格式来显示数据。
换句话说,尽管在ProductID字段中所包含的实际数值为"3",但该网格所显示的值将是"P-0003"。
PrivateSubForm_Load()
DataGrid1.Columns("ProductID").NumberFormat="P-0000"
EndSub
要返回数据库中所包含的实际值,应使用CellValue方法,如下所示:
PrivateSubDataGrid1_RowColChange(LastRowAsVariant,ByValLastColAsInteger)
Debug.Print_
DataGrid1.Columns("ProductID").CellValue(DataGrid1.Bookmark)
EndSub
注意上面所用的CellValue和下面所用的CellText值,都需要将Bookmark属性作为一个参数,功能才正确。
相反地,如果要返回该字段的格式化的值,应使用CellText方法:
PrivateSubDataGrid1_RowColChange(LastRowAsVariant,ByValLastColAsInteger)
Debug.Print_
DataGrid1.Columns("ProductID").CellText(DataGrid1.Bookmark)
EndSub
注意上面的CellText方法等价于使用DataGrid控件的Text属性。
下一步
要阅读关于使用该控件创建简单的应用程序的一个循序渐进的过程,请参阅“使用DataGrid控件创建简单的数据库应用程序”,或“创建一个连接DataList控件的DataGrid”。
要了解关于Split对象以及如何对其编程的详细信息,请参阅“操作DataGrid视图”。
创建Northwind的OLEDB数据链接
访问数据的一个重要步骤是为想要访问的每个数据库都创建一个OLEDB数据源。
下面的步骤为VisualBasic所提供的Nwind.mdb(Northwind)数据库创建这样一个对象。
这个数据源被用于VisualBasic文档所提供的一些示例过程。
在一个计算机上只需要创建一次OLEDB数据源。
要创建Northwind的OLEDB数据源
1.打开WindowsExplorer或WindowsNTExplorer。
2.打开您想要创建OLEDB数据源的目录。
在该示例中,打开ProgramFiles、MicrosoftVisualStudio和VB98。
3.右键单击Explorer的右边窗格,然后单击上下文菜单上的“新建”。
从文件类型列表中单击“Microsoft数据链接”。
4.重命名新文件Northwind.MDL。
5.右键单击文件并单击上下文菜单上的“属性”,以显示“Northwind.MDLProperties”对话框。
6.单击“连接”选项卡。
7.单击“提供方”框并选择“MicrosoftJet3.51OLEDBProvider”。
8.在DataSource框中输入nwind.mdb文件的路径。
9.单击“测试连接”,检测连接。
10.如果连接通过,单击“确定”。
注意也可以通过在“控制面板”中单击“数据链接”图标创建一个OLEDB数据源。
在“管理数据链接文件”对话框中,单击“新建”创建一个新的数据源。
使用DataGrid和ADOData控件创建一个简单的数据库应用程序
只使用一个DataGrid和一个ADOData控件,可以创建一个允许最终用户阅读和写入记录集的数据库应用程序。
要使用ADO数据控件来创建一个简单的数据库应用程序
1.为Northwind数据库创建一个OLEDB数据源。
如果还没有创建数据源,请按照“创建Northwind的OLEDBDataLink”中的步骤操作。
2.在VisualBasic中创建一个新的标准的EXE工程。
如果DataGrid控件不在“工具箱”中,则用右键单击“工具箱”,然后使用“部件”对话框来添加控件。
同时也载入ADO控件。
3.在空窗体上各放置控件的一个实例。
4.将ADO控件的ConnectionString属性设置为Northwind的数据源。
单击并选定该ADOData控件,并按F4键出现“属性”窗口。
单击“ConnectionString”,然后单击OLEDBFile。
单击Northwind的数据源。
5.设置ADO控件的RecordSource属性。
在“属性”窗口中,单击“记录源”并输入一条SQL语句来填充DataGrid
控件。
在本例中,输入“Select*FromProducts”。
6.将DataGrid控件的DataSource属性设置为这个ADOData控件。
单击并选定该DataGrid控件。
在其“属性”窗口中,单击“数据源”将出现一个包含所有数据控件的下拉列表——在本例中只有ADOData控件。
单击这个控件。
7.按F5键运行这个工程。
创建一个连接DataList控件的DataGridData
Grid的通常用法是显示数据库的一个表所提供的“详细内容”。
例如,Northwind(Nwind.mdb)数据库包括两个表,一个名为"Suppliers",另一个名为"Products"。
在本例中,我们使用DataList控件来显示"Suppliers"表中的供应商的公司名称。
当用户单击任意一个公司名称时,这个DataList控件将提供该公司的SupplierID。
使用这个标识符,就可以构造一个查询,在"Products"表中检索具有相匹配的SupplierID的所有记录。
换句话说,当用户单击一个公司时(在DataList控件中),该公司生产的所有产品将出现在DataGrid控件中。
要使用一个指定供应商的产品填充一个DataGrid控件
1.确认在机器上已为Northwind数据库建立了一个OLEDB数据源;如果还没有创建这样的一个数据源,请按照“创建Northwind的OLEDBData连接”的步骤操作。
2.在VisualBasic中创建一个新的标准的EXE工程。
如果DataGrid、DataList和ADOData控件不在“工具箱”中,则右键单击“工具箱”,然后单击“部件”。
在“部件”对话框中双击“MicrosoftDataGridControl”、“MicrosoftDataListControls”以及“MicrosoftADOControl”。
3.在一个空窗体中各放置一个DataGrid和DataList控件的实例。
将DataList控件放置在该窗体的左上角,然后将DataGrid控件放在它的下面的某处。
4.在窗体放置两个ADOData控件实例。
选择第一个ADOData控件,并按F4键来显示其“属性页”。
将该控件的Name属性设置为adoSuppliers。
选择第二个ADOData控件并将其Name属性设置为adoProducts。
将第一个控件直接放在DataList控件的下面,把第二个控件直接放在DataGrid控件的下面。
5.将这两个ADOData控件的ConnectionString属性设置为Northwind的OLEDB数据源。
选择名为adoSuppliers的控件,然后将其ConnectionString属性设置为Northwind的OLEDBdatasource(Northwind.mdl)。
选择名为adoProducts的控件,并重复该操作。
6.设置这两个ADOData控件的RecordSource属性。
选择adoSuppliers并在其“属性页”上单击“RecordSoure”。
输入Select*FromSuppliers。
这个查询将指示该ADOData控件返回Suppliers表中的所有记录。
选择adoProducts,单击“RecordSoure”,并输入Select*FromProducts。
这个查询将返回在Products表中的所有记录。
7.将DataList控件的RowSource属性设置为adoSuppliers。
RowSource属性决定由哪一个数据源为ListField属性供应数据。
8.将DataList控件的ListField属性设置为CompanyName。
ListField属性被设置成名为Suppliers的表中的字段名称。
在运行时,DataList控件显示在这个属性中所指定的字段的值。
在本例中,该属性将显示在Suppliers表中找到的一个公司名称。
9.将DataList控件的BoundColumn属性设置为SupplierID。
BoundColumn属性被设为Suppliers表中的第二个字段。
在本例中,这个属性就被设为SupplierID字段。
当单击DataList控件时,BoundText属性返回与在DataList控件中所显示的公司相关联的SupplierID字段的值。
这个值将用于对Products表的查询,该查询为DataGrid控件提供数据。
10.将DataGrid控件的DataSource属性设置为adoProducts。
DataSource属性为该控件指定数据源。
在本例中,该属性被设置为名为adoProducts的ADOData控件,这将返回Products表中的所有记录。
11.在窗体的代码模块中,添加下述内容:
PrivateSubDatalist1_Click()
'声明一个用来包含新查询的字符串变量。
这个新的
'查询使用DataList控件的BoundText属性
'来提供一个SupplierID值。
新查询查找所有
'具有相同的SupplierID的产品。
这个查询被
'指定给名为adoProducts的ADOData控件
'的RecordSource属性。
在刷新控件后,DataGrid
'将使用包含由同一个公司供应的所有产品的新
'记录集来更新。
DimstrQueryAsString
strQuery="Select*FROMProductsWHERESupplierID="&_
Datalist1.BoundText
WithadoProducts
.RecordSource=strQuery
.Refresh
EndWith
WithDataGrid1
.ClearFields
.ReBind
EndWith
EndSub
12.运行该工程。
单击DataList控件中的任意公司名称,将自动用该公司所供应的产品更新DataGrid控件。
使用列
通过更改DataSource属性,可以动态地更改在DataGrid控件中显示的数据。
例如,可以显示同一个数据库的不同表。
如果这样做,则DataGrid控件将只根据默认的属性显示数据。
添加、删除或隐藏列
通过使用Columns集合和Column对象的属性和方法,可以在程序中添加、删除或隐藏列。
添加和删除一列
要在运行时添加一列,可以使用Add方法。
如果首先声明一个变量,并将新对象赋给该变量,就可以用简明的代码设置各种属性。
PrivateSubAddColumn()
'在最右边的位置添加一列。
然后设置其Visible、Width、
'Caption以及Alignment属性。
DataField属性则指定
'该列将绑定到哪一个字段。
DimcAsColumn
Setc=DataGrid1.Columns.Add(DataGrid1.Columns.Count)
Withc
.Visible=True
.Width=1000
.Caption="我的新列"
.DataField=Adodc1.Recordset.Fields("ProductName").Name
.Alignment=dbgRight
EndWith
EndSub
可以使用方法来删除任意一列。
请确保使用ColIndex参数来指定要删除的列。
下面的代码将删除被单击的列。
PrivateSubDataGrid1_HeadClick(ByValColIndexAsInteger)
DataGrid1.Columns.RemoveColIndex
EndSub
隐藏一列
通过将Visible属性设置为False,可以隐藏任意一列。
当想要限制用户可以查看或编辑的列时这一功能特别有用。
下面的示例在Columns集合中循环,隐藏除少数列之外的所有列。
PrivateSubHideColumns()
'使用DataField属性来判别正在测试的是哪一列。
'只显示三列:
ProductName、UnitPrice以及
'UnitsInStock。
DimcAsColumn
ForEachcInDataGrid1.Columns
SelectCasec.DataField
Case"ProductName"
c.Visible=True
Case"UnitPrice"
c.Visible=True
Case"UnitsInStock"
c.Visible=True
c.Caption="InStock"'更改这个列的标头。
CaseElse '隐藏其它所有的列。
c.Visible=False
EndSelect
Nextc
EndSub
操作DataGrid视图
一个“拆分”的网格使最终用户对相同的数据可以拥有多个视图。
例如,假设有一个由十个字段组成的大表。
在这种情况下,在控件中察看的记录集将有十列宽,除非窗体非常宽,否则用户将无法同时看见所有列的内容。
,而且,假设用户只对第一列和最后一列感兴趣(例如,第一列是名字,最后一列是电话号码)。
为了能同时看到在两端的列(不重新安排列的顺序),可以对网格进行拆分。
创建一个Split对象
在设计时,可以创建一个拆分,具体步骤是:
右键单击网格,单击“编辑”,再单击右键,然后单击“拆分”。
通过右键单击该控件,并单击“属性”来显示“属性页”对话框,可以编辑这个拆分。
可以使用“拆分”选项卡来自定义拆分。
要删除一个拆分,右键单击该拆分,并单击“删除”。
在运行时,最终用户也可以通过单击位于这个网格控件的左下边的右边的选项卡,以手工方式来拆分该网格(除非不允许这个操作),如下图所示:
默认情况下,DataGrid控件包含一个Split对象。
防止最终用户添加拆分的代码为:
DataGrid1.Splits(0).AllowSizing=False
在程序中添加和删除拆分
DataGrid控件包含一个Split对象的集合。
要在程序中添加拆分,可以使用Add方法,如下所示:
DataGrid1.Splits.Add1
注意Add方法需要新的拆分索引作为其参数。
要添加一个拆分,应将这个索引参数设置为Splits集合的Count属性值。
使用Split集合的Add方法,可以在程序中按照实际需要添加拆分。
由于添加多于两个以上的拆分将使网格很难使用,可以使用该集合的Count属性来限制拆分的数目。
IfDataGrid1.Splits.Count<3Then'添加一个拆分。
DataGrid1.Splits.AddDataGrid1.Splits.Count
EndIf
使拆分同步
当拆分多于一个时,可能希望控制这些拆分如何滚动。
例如,在一个具有三个拆分的网格中,可以决定只让第一个和第三个拆分同步,而让中间的拆分独立地滚动。
要同步任何两个(或多个)拆分,只需将每个Split对象的ScrollGroup属性设置为同一个值。
'使第一个和第三个Split对象同步。
WithDataGrid1
.Splits(0)
.ScrollGroup=1
.Splits
(1).ScrollGroup=2
.Splits
(2).ScrollGroup=1
EndWith
通过设置Scrollbars属性,使同步的拆分组只显示一个滚卷条,从而进一步自定义拆分的外观。
控制Tab键和箭头键的行为
使用WrapCellPointer、TabAcrossSplits以及TabAction属性,可以决定当最终用户按下
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB Datagrid 控件 使用