DataGrid控件的使用

2018-06-17 17:14:15来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

使用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视图”。

->

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:切割一个Container中的图片

下一篇:使用ObjPtr检测2个对象变量是否指向同一对象