DataGrid控件的使用

上一篇 / 下一篇  2007-03-06 11:32:03 / 个人分类:vb

  DataGrid 控件是一种类似于电子数据表的绑定控件,可以显示一系列行和列来表示 Recordset 对象的记录和字段。可以使用 DataGrid 来创建一个允许最终用户阅读和写入到绝大多数数据库的应用程序。DataGrid 控件可以在设计时快速进行配置,只需少量代码或无需代码。当在设计时设置了DataGrid 控件的 DataSource 属性后,就会用数据源的记录集来自动填充该控件,以及自动设置该控件的列标头。然后您就可以编辑该网格的列;删除、重新安排、添加列标头、或者调整任意一列的宽度。51Testing软件测试网 O&u*Q!a` } w
    在运行时,可以在程序中切换 DataSource 来察看不同的表,或者可以修改当前数据库的查询,以返回一个不同的记录集合。51Testing软件测试网$S+JErG |{'q|w7c z}
    注意 DataGrid 控件与 Visual Basic 5.0中的 DBGrid 是代码兼容的,除了一个例外:DataGrid 控件不支持 DBGrid 的“解除绑定模式”概念。DBGrid 控件包括在 Visual Basic 的 Tools 目录中。51Testing软件测试网s$I,?AhVZw
51Testing软件测试网za_$\ yC!v$x
    可能的用法
k&\Aa"~];D0[!g;Z`G0    查看和编辑在远程或本地数据库中的数据。
imJ:[.@.SA W0    与另一个数据绑定的控件(诸如 DataList 控件)联合使用,使用 DataGrid控件来显示一个表的记录,这个表通过一个公共字段链接到由第二个数据绑定控件所显示的表。
v&^:B-N9S;t-f051Testing软件测试网He|0XJ`;y7h
    使用 DataGrid 控件的设计时特性51Testing软件测试网M^i4dPV;fD
    可以不编写任何代码,只通过使用 DataGrid 控件的设计时特性来创建一个数据库应用程序。下面的说明概要地说明了在实现 DataGrid 控件的典型应用时的一般步骤。完整的循序渐进的指示,请参阅主题“DataGrid 方案1: 使用 DataGrid 控件创建一个简单数据库应用程序”。51Testing软件测试网-X:z$yxF
要在设计时实现一个 DataGrid 控件51Testing软件测试网1o R(k ],S(B
    1. 为要访问的数据库创建一个 Microsoft 数据链接 (.MDL) 文件。请参阅“创建 Northwind OLE DB 数据链接”主题,以获得一个示例。51Testing软件测试网 @ wz6J] ^?*c5g1}
    2. 在窗体上放置一个 ADO Data 控件,并将其 ConnectionString 属性设置为在第 1 步中所创建的OLE DB 数据源。51Testing软件测试网es u%B? _
    3. 在这个 Ado Data 控件的 RecordSource 属性中输入一条将返回一个记51Testing软件测试网8i?].\NL3_
录集的 SQL 语句。例如,Select * From MyTableName Where CustID = 12
XO#JA'T"W VXY0    4. 在窗体上放置一个 DataGrid 控件,并将其 DataSource 属性设置为这个 ADO Data 控件。
-X dTz`'b"]!Pu0    5. 右键单击该 DataGrid 控件,然后单击“检索字段”。
q ]n"SXBo%v#Hp0    6. 右键单击该 DataGrid 控件,然后单击“编辑”。51Testing软件测试网o~;T nc
    7. 重新设置该网格的大小、删除或添加网格的列。51Testing软件测试网cf3\ jQ
    8. 右键单击该 DataGrid 控件,然后单击“属性”。
'q-t9bBI7s.Z0    9. 使用“属性页”对话框来设置该控件的适当的属性,将该网格配置为所需的外观和行为。51Testing软件测试网A?'N3pjZ?4r\*Y
51Testing软件测试网 ?zxB*t"^L
    在运行时更改显示的数据51Testing软件测试网6CBdn1U(O
    在创建了一个使用设计时特性的网格后,也可以在运行时动态地更改该网格的数据源。下面介绍实现这一功能的通常方法。
(Gw9[2l[C2^x8[9p051Testing软件测试网X'I.gW(W7hc SC
    更改 DataSource 的RecordSource51Testing软件测试网6Y_G?)TJL
    更改所显示的数据的最通常方法是改变该 DataSource 的查询。例如,如果DataGrid 控件使用一个ADO Data控件作为其 DataSource,则重写RecordSource和刷新该ADO Data 控件都将改变所显示的数据。51Testing软件测试网c5_5] {z A
    '' ADO Data 控件连接的是 Northwind 数据库的'' Products 表。新查询查找所有51Testing软件测试网Qfv/CM^m+T
    '' SupplierID = 12 的记录。51Testing软件测试网W ? \-a4ivu
    Dim strQuery As String
;r;T$U2H rQ0    strQuery = "SELECT * FROM Suppliers WHERE SupplierID = 12"51Testing软件测试网i FAnp;p
    Adodc1.RecordSource = strQuery51Testing软件测试网4gf8\0_&r#W J1I
    Adodc1.Refresh51Testing软件测试网 Y3} N%u(}b2_$MPQ

\abp#B3?|9?0    更改 DataSource51Testing软件测试网Z/?!xb!w G3ip`
    在运行时,可以将 DataSource 属性重新设置为一个不同的数据源。例如,您可能具有若干个 ADO Data 控件,每个控件连接不同的数据库,或设置为不同的 RecordSource 属性。可以简单地将 DataSource 从一个 ADO Data控件重新设置为另一个 ADO Data 控件:
Tb)S5u2w,Kj5G0    '' 将 DataSource 重新设置为一个连接到 Pubs 数据库的、51Testing软件测试网uH4Z v'`q5goYS)tz
    '' 使用 Authors 表的 ADO Data 控件。51Testing软件测试网8m_^^5q HBv|)dq,h
    Set DataGrid1.DataSource = adoPubsAuthors51Testing软件测试网%xxQ!Hg/Z+W

DoP6sw!S4A"O+pL0    重新绑定 DataSource51Testing软件测试网 l%g'cmn/im
    当将 DataGrid 控件用于一个远程数据库,诸如 SQLServer 时,可以改变表的结构。例如,可以给这个表添加一个字段。在这种情形下,可以调用Rebind 方法根据新的结构来重新创建该网格。注意,如果已经在设计时改变了这个列的布局,DataGrid 控件将会试图重新创建当前的布局,包括任何空的列。不过,通过首先调用 ClearFields 方法,可以强制该网格重新设置所有的列。51Testing软件测试网1GV g,a i'\
51Testing软件测试网5X1R8[!T2B-^h ` [
    从 DataGrid 返回值
` T k1HIR0    在 DataGrid 被连接到一个数据库后,可能想要监视用户单击了哪一个单元。可以使用 RowColChange 事件——而不是 Click 事件。如下所示:51Testing软件测试网 S6^*t"q!wX wa~
    Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)51Testing软件测试网{0W kNq3C@ P
       '' 显示用户所单击的单元的文字、行和列的信息。
1V nW#\Aw f4G0       Debug.Print DataGrid1.Text; DataGrid1.Row; DataGrid1.Col51Testing软件测试网 w9k&JU&q
    End Sub51Testing软件测试网p:SR)Z.b,d

dk8LB&JTSOFG9|0    使用 CellText 和 CellValue 方法
|ck7FP@`0    当一个列使用 NumberFormat 属性设置格式后,CellText 和 CellValue 属性是很有用的。NumberFormat 属性不必更改实际的数据格式就可以更改任何包含数字的列的格式。例如,给定一个网格,其中包含一个名为 ProductID的、包含整数的列。下面的代码将使 DataGrid 以"P-0000" 的格式来显示数据。换句话说,尽管在 ProductID 字段中所包含的实际数值为 "3",但该网格所显示的值将是 "P-0003"。
JN.j0V{ P X s0      Private Sub Form_Load()51Testing软件测试网{c\)c(eu%}O
        DataGrid1.Columns("ProductID").NumberFormat = "P-0000"51Testing软件测试网f9g9H2g H&c
      End Sub51Testing软件测试网jcI mrk
    要返回数据库中所包含的实际值,应使用 CellValue 方法,如下所示:
\0G"Jo_`9PS6m0      Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)51Testing软件测试网`f9]z:ws0A1?Y
        Debug.Print _
2XqZ,k'Jj0        DataGrid1.Columns("ProductID").CellValue(DataGrid1.Bookmark)51Testing软件测试网:\ K&Y|*t%P${7~#M0Y|
      End Sub
Y'~f[*U0    注意 上面所用的 CellValue 和下面所用的 CellText 值,都需要将Bookmark 属性作为一个参数,功能才正确。51Testing软件测试网F@&U'Vb9t
    相反地,如果要返回该字段的格式化的值,应使用 CellText 方法:
CWE%V ~C0      Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)51Testing软件测试网JKH;Wc#DF)~ R
        Debug.Print _
Mz4Qj;hit0        DataGrid1.Columns("ProductID").CellText(DataGrid1.Bookmark)51Testing软件测试网n:L+[/n+^m
      End Sub51Testing软件测试网.y9` O4~N?N
    注意 上面的 CellText 方法等价于使用 DataGrid 控件的 Text 属性。51Testing软件测试网l.tc!MJ`

9L&}.v_n&EQ0    下一步
k ]!Gl6I!A0b2j.`0    要阅读关于使用该控件创建简单的应用程序的一个循序渐进的过程,请参阅“使用 DataGrid 控件创建简单的数据库应用程序”,或“创建一个连接DataList 控件的 DataGrid”。51Testing软件测试网7D3_9E[ h"z?
    要了解关于 Split 对象以及如何对其编程的详细信息,请参阅“操作DataGrid 视图”。

TAG: vb

 

评分:0

我来说两句

日历

« 2024-06-10  
      1
2345678
9101112131415
16171819202122
23242526272829
30      

数据统计

  • 访问量: 34661
  • 日志数: 65
  • 图片数: 4
  • 建立时间: 2006-12-06
  • 更新时间: 2008-09-10

RSS订阅

Open Toolbar