使用 Datarepeater 控件

Datarepeater 控件的功能相当于用户创建的任意控件的数据绑定容器。例如,假设要创建一个包含三个 TextBox 控件和一个 Checkbox 控件的用户控件,该用户控件将用于显示雇员数据库的一条记录——显示雇员的姓名、生日、雇员编号和婚姻状况。

当控件被编译为 .ocx 后,DataRepeater 控件的 RepeatedControlName 属性被设置为用户控件,然后 DataRepeater 被绑定到某个数据源,例如 ADO 数据控件,该控件在用户控件和雇员数据库之间建立起连接。在运行时,DataRepeater 将显示用户控件的几个实例,每个控件占一行,并分别绑定到数据库的不同记录。其结果如下图所示。

雇员记录在DataRepeater控件中的重复

在运行时,用户可以使用 HOME、END、PAGEUP、PAGEDOWN 和箭头键在记录集中滚动。

可能的用途

  1. 创建一个目录,包含各个产品的图像。

  2. 创建用于跟踪个人财政情况的银行存折应用程序。

  3. 创建包含 ComboBox 控件的自定义数据绑定网格。

创建一个数据绑定用户控件以在 DataRepeater 控件中使用

使用 DataReoeater 控件的第一步是创建数据绑定用户控件。下面的过程创建了一个可以在DataRepeater中重复多次的简单控件。

详细信息 有关创建数据绑定用户控件的详细内容,请参阅“绑定控件到数据源”。

要创建在 DataRepeater 控件中使用的数据绑定用户控件,请按照以下步骤执行:

  1. 创建一个新的ActiveX Control工程。

  2. 在“属性”窗口中,将 Project1 重命名为 ProductsCtl

  3. 在“属性”窗口中,将 UserControl1 重命名为 ctlProducts

  4. 在窗体中添加两个 TextBox 控件和两个 Label 控件,并按照下表设置它们的属性。

对象属性设置值

Text1NametxtProductName

Text2NametxtUnitPrice

Label1CaptionProduct Name

Label2CaptionUnit Price

由于用户控件会重复出现,可能需要将其高度最小化;上面描述的简单用户控件如下所示:

  1. 要创建用户控件的 Let 和 Get 属性,需要在控件中添加以下代码。
    Public Property Get ProductName() As String
    ProductName = txtProductName.Text
    End Property
    
    Public Property Let ProductName(ByVal newProductName As String)
    txtProductName.Text = newProductName
    End Property
    
    Public Property Get UnitPrice() As String
    UnitPrice = txtUnitPrice.Text ' 返回一个字符串!
    End Property
    
    Public Property Let UnitPrice(ByVal newUnitPrice As String)
    txtUnitPrice.Text = newUnitPrice ' NewUnitPrice 是一个字符串!
    End Property
    
    Private Sub txtProductName_Change()
    PropertyChanged "ProductName"
    End Sub
    
    Private Sub txtUnitPrice_Change()
    PropertyChanged "UnitPrice"
    End Sub
    

    重点 注意,在上面的代码中,UnitPrice 属性被声明为一个字符串。这样,DataRepeater 控件的用户就能够通过 DataFormat 对象将该字符串格式化为 Currency 类型。如果将新值按照 Currency 格式(可能希望这么做)输入,那么由 DataFormat 对象提供的格式化功能将被忽略。

  2. 使用“属性特性”对话框使属性具有数据绑定特性。

    在“工具”菜单中单击“属性特性”。在“属性特性”对话框中,单击“高级”。“名字”框中包含了需要设置数据绑定的属性,同时也应该包含“ProductName”。单击“属性为数据绑定”,然后单击“设计时显示在 DataBindings 集合中”。单击“名字”框并单击“UnitPrice”。再次单击“属性为数据绑定”,然后单击“设计时显示在 DataBindings 集合中”。单击“确定”关闭对话框。

  3. 使用 Windows 资源管理器,在硬盘上创建一个名为 ProductsCtl 的新文件夹。

  4. 单击“文件”菜单中的“保存工程”,使用对话框中提供的名称将该工程保存在新文件夹中。

  5. 单击“文件”菜单中的“生成 ProductsCtl.ocx”,并将该 .ocx 保存在同一个文件夹中。

在将用户控件编译为 .ocx时,Visual Basic 会注册该控件,同时允许在 DataRepeater 控件中使用该控件。

在 DataRepeater 控件中使用数据绑定用户控件

一旦生成并编译了数据绑定用户控件,就可以在 DataRepeater 控件中重复使用它。

要在 DataRepeater 控件中使用数据绑定用户控件,请按照以下步骤执行:

  1. 创建一个新的 Standard Exe 工程。
  2. 为该工程和窗体设置以下属性:

对象属性设置值

Project1NameprjRepeater

Form1NamefrmRepeater

  1. Toolbox 中添加 DataRepeater 控件和 ADO Data Control

    单击“工程”菜单上的“部件”,在“部件”对话框中,单击“控件”选项卡,选中“Microsoft 数据转发器控件”和“Microsoft ADO 数据控件”。单击“确定”关闭对话框。

  2. 在窗体上绘制一个 DataRepeater 控件,使该控件足够大,以便容纳想要重复的控件“行”。一“行”就是重复控件的高度,由 UserControl 对象设计器的大小决定。

  3. 在窗体上 DataRepeater 控件的下方绘制一个 ADO 数据控件

  4. 单击“ADO 数据控件”选中它。然后在“属性”窗口上单击“连接字符串”属性。使用“连接字符串”对话框创建一个连接字符串访问 Northwind 数据库。

  5. 在“属性”窗口中单击“资源”,输入下面的 SQL 语句:
    SELECT * FROM Products
  6. 单击 DataRepeater 控件选中它。在“属性”窗口中单击“数据源”,单击“ADODC1”设置数据源。

  7. 在“属性”窗口中,单击“RepeatedControlName”,在下拉列表中显示计算机中的所有可用控件。在该列表中,单击“ProductsCtl.ctlProducts”。选中的控件将在 DataRepeater 控件中重复。

将用户控件的属性绑定到 ADO 数据控件

一旦用户控件放入 DataRepeater 控件后,就必须将用户控件的属性绑定到记录源。

  1. 右键单击 DataRepeater 控件,然后单击“DataRepeater 属性”。在“属性页”对话框中单击“RepeaterBindings”选项卡。

  2. 单击“PropertyName”框,在下拉列表中显示重复控件的数据绑定属性,单击“ProductName”。

  3. 单击“DataField”框,下拉列表中将显示数据源中可用的数据字段,单击“ProductName”。

  4. 单击“增加”按钮在RepeaterBindings集合中添加这一对属性和数据字段。

  5. 重复步骤2至4设置其余属性(UnitPrice)。

  6. 单击“格式”选项卡。

  7. 在“格式项目”框中,单击“UnitPrice”。

  8. 在“格式类型”框中,单击“货币”。在“符号”框中,选择和用户国家/地区对应的货币符号。

  9. 单击“确定”关闭对话框。

  10. 按下 F5 键运行该工程。然后可以使用滚动条在记录集中滚动,也可以单击 ADO 数据控件的定位按钮。