手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>VB>列表

DataGrid 控件的使用 四

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

    使用 Bookmarks 和 SelBookmarks 跟踪记录
    Bookmarks 和 SelBookmarks 提供了标记记录的一种手段。当编写应用程序中的特定功能(诸如允许最终用户手工地选择多个不相邻的记录,进行所选记录的大批更新)时,这就很有必要。在这些情形中,需要标记哪些记录已被选择,因此可以使用 SelBookmarks 集合及其属性。
    有两个函数,分别是 CellText 和 CellValue 方法,需要标记才能正确执行。

    标记用户的选择
    SelBookmarks 集合包含所有选定的记录的书签。当最终用户手工选择记录时(即在单击时按住 CTRL 键),每一个选定的记录的书签都会加入到该集合中。使用标准的循环,用户可以知道已经选定了什么,也可以保存书签(因为可能需要恢复某个值),以及执行操作:
    Dim i as Integer ' 计数器
    Dim intCount As Integer
    intCount = DataGrid1.SelBookmarks.Count - 1
    ReDim arrSelBK(intCount) ' 声明用于保存书签的数组。
    For i = 0 To intCount
      ArrSelBK(i) = DataGrid1.SelBookmarks(i)
      ' 在此处执行操作。如果该操作必须被
      ' 取消,则退出该循环,然后使用该数
      ' 组来取消这些更改。
    Next i

    通过在程序中添加到 SelBookmarks 集合来选择记录
    通过将记录添加到这个集合,也可以在程序中选定记录。例如,可能有一个显示指定的客户所有订货的网格。如果要高亮显示该客户花费超过 $100的所有记录,则对记录进行过滤,并将结果书签添加到 SelBookmarks 集合。
    Dim rs As Recordset
    Set rs = Adodc1.Recordset

    While Not rs.EOF
      If rs!SupplierID = 12 Then
        DataGrid1.SelBookmarks.Add rs.Bookmark
      End If
      rs.MoveNext
    Wend

    显示计算结果字段
    假设在表中有一个名为 "Price" 的字段,并且想使用本地税率来计算表中每一项的税费。这就是一个计算结果字段,可以通过修改 DataSource 的查询来计算这个值,并把这个值返回给 DataGrid 控件。
    要在 DataGrid 控件中创建一个计算结果字段
    1. 确认在机器上已为 Northwind 数据库建立了一个OLE DB 数据源;如果还没有创建这样的一个数据源,请按照“创建 Northwind 的OLE DBData 连接”的步骤操作。
    2. 在窗体上放置一个 ADO Data 控件和一个 DataGrid 控件。
    3. 将 ADO Data 控件的ConnectionString 属性设置为 Northwind 的数据源。
    4. 设置 ADO Data 控件的 RecordSource 属性。在“属性”窗口中,单击“记录源”并输入 Select ProductName, UnitPrice,(UnitPrice * .082) As Tax From Products。
    5. 将 DataGrid 控件的 DataSource 属性设置为这个 ADO Data 控件。
    6. 运行该工程。

    与类模块一起使用 DataGrid 控件
    如果想要访问以自定义格式或以 ODBC 驱动程序不直接支持的格式存放的数据,可以创建一个类来封装该数据。然后可以编写该类的自定义函数来检索这些数据。这样该类就变成了一种数据源,可以被任何数据使用者(如DataGrid 控件)使用。
    在这个类模块的Initialize 事件中,首先通过声明一个作为 New ADODB.Recordset的变量,来创建一个 ADODB recordset 对象。在创建了这个 recordset 对象后,再添加字段,每个数据源中的每个字段都要加入。然后使用合适的数据填充这个记录集。
    注意 也可以使用 OLEDB 示例提供者来创建一个数据源。关于 OLEDB示例提供者的详细信息,请参阅“创建带有数据提供方的部件”。
    类模块有一个 GetDataMember 事件,只要当数据使用者(诸如 DataGrid 控件)需要数据时就产生该事件。在这个事件中,Data 参数被设置为在Initialize 事件中所创建的 recordset 对象。
    如果要使用这个类模块,应创建一个具有一个 DataGrid 控件的窗体。在该窗体的 Load 事件的代码中,将该控件的 DataSource 属性设置为这个类。
    注意 数据类模块在设计时是不可用的。例如,如果使用 DataGrid 控件,则当用户在“属性”窗口中单击“数据源”时,所有可用的数据源都会出现在一个下拉列表中。但其中不会有这个数据类模块,它只能在代码中设置。

    使用类模块创建一个数据源
    下面的示例使用一个类模块来创建一个简单数据源。然后通过 DataSource属性将 DataGrid 控件绑定到该模块。
要创建一个用于DataGrid 的类
    1. 创建一个新的标准 Exe 工程。
    2. 给窗体添加一个 DataGrid 控件。如果DataGrid控件不在“工具箱”中,则在“工程”菜单中单击“部件”,
再单击“Microsoft DataGrid Control”,然后单击“确定”。
    3. 在“工程”菜单中,单击“引用”。在“引用”对话框中,单击“MicrosoftActiveX Data Objects 2.0 Library”。
    4. 在“工程”菜单中,单击“添加类模块”来给工程添加一个数据类模块。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!