演练:在 DataRepeater 控件中显示数据 (Visual Studio)

更新: 2008 年 7 月

本演练提供了用于在 DataRepeater 控件中显示绑定数据的完整基本方案。

系统必备

本演练需要 Northwind 示例数据库。

如果没有在开发计算机中安装此数据库,可以从 Microsoft Download Center(Microsoft 下载中心)进行下载。有关说明,请参见下载示例数据库 (LINQ to SQL)

概述

本演练的第一部分主要有以下四个任务:

  • 创建解决方案。

  • 添加 DataRepeater 控件。

  • 添加数据源。

  • 添加数据绑定控件。

说明:

对于在以下说明中使用的某些 Visual Studio 用户界面元素,您的计算机可能会显示不同的名称或位置。这些元素取决于您使用的 Visual Studio 版本及设置。有关更多信息,请参见Visual Studio 设置

创建 DataRepeater 解决方案

在第一步中,创建项目和解决方案。

创建 DataRepeater 解决方案

  1. 在 Visual Studio“文件”菜单上单击“新建项目”。

  2. 在“新建项目”对话框中的“项目类型”窗格中,展开“Visual Basic”,然后单击“Windows”。

  3. 在“模板”窗格中,单击“Windows 窗体应用程序”。

  4. 在“名称”框中键入 DataRepeaterApp。

  5. 单击“确定”。

    Windows 窗体设计器即会打开。

  6. 在“Windows 窗体设计器”中选择窗体。在“属性”窗口中,将“Size”属性设置为 800, 700。

添加 DataRepeater 控件

在此步骤中,您将向窗体中添加一个 DataRepeater 控件。

添加 DataRepeater 控件

  1. 在“视图”菜单上单击“工具箱”。

    将打开“工具箱”。

  2. 选择“Visual Basic PowerPacks”选项卡。

  3. DataRepeater 控件拖到“Form1”上。

  4. 在“属性”窗口中,将“Location”属性设置为 0, 25。

  5. 将“Size”属性设置为 460, 600。

添加数据源

在此步骤中,您将为 DataRepeater 控件添加一个数据源。

添加数据源

  1. 在“数据”菜单上单击“显示数据源”。

  2. 在“数据源”窗口中,单击“添加新数据源”。

  3. 在“选择数据源类型”页上选择“数据库”,然后单击“下一步”。

  4. 在“选择您的数据连接”页上执行下列步骤之一:

    • 如果下拉列表中包含与 Northwind 示例数据库的数据连接,请单击该连接。

      - 或 -

    • 单击“新建连接”来配置新的数据连接。有关更多信息,请参见如何:创建与 SQL Server 数据库的连接

  5. 如果数据库需要密码,请选择该选项以包括敏感数据,再单击“下一步”。

    说明:

    如果出现一个对话框,请单击“是”将该文件保存到您的项目中。

  6. 单击“将连接字符串保存到应用程序配置文件”页上的“下一步”。

  7. 在“选择数据库对象”页面上展开“表”节点。

  8. 选中“Customers”和“Orders”表旁边的复选框,然后单击“完成”。

    “NorthwindDataSet”即添加到您的项目中,并且“Customers”和“Orders”表显示在“数据源”窗口中。

添加数据绑定控件

在此步骤中,您将向 DataRepeater 中添加数据绑定控件。

添加数据绑定控件

  1. 在“数据源”窗口中,选择“Customers”表的顶级节点。

  2. 通过单击表节点上的下拉列表中的“Details”将该表的下拉类型更改为“Details”。

  3. 选择“Customers”表节点,将它拖到 DataRepeater 控件的项模板区域(上半部分区域)。

    一个 BindingNavigator 控件添加到窗体中,并且“NorthwindDataSet”、“CustomersBindingSource”、“CustomersTableAdapter”、“TableAdapterManager”和“CustomersBindingNavigator”组件添加到组件栏中。

  4. 选择所有字段及其关联标签,并将它们置于项模板区域左边缘附近。

  5. 选择后五个字段(“Region”、“Postal Code”、“Country”、“Phone”和“Fax”)及其关联标签,并将它们上移到前六个字段的右侧。

  6. 选择项模板(控件的上半部分区域)。

  7. 在“属性”窗口中,将“Size”属性设置为 427, 170。

此时,您就得到了一个有效的应用程序,该应用程序将显示客户的重复列表。可以按 F5 运行该应用程序、更改数据以及添加或删除客户记录。

在可选的后续步骤中,您将学习如何自定义 DataRepeater 控件。

后续步骤(可选)

演练的本部分有以下四个可选任务:

更改 DataRepeater 控件的外观

在此可选步骤中,您将在设计时更改 DataRepeater 控件的 BackColor。您还将添加代码来以交替颜色显示行以及有条件地更改标签的 ForeColor。

更改控件的外观

  1. 在 Windows 窗体设计器中,选择 DataRepeater 控件的主(下半部分)区域。

  2. 在“属性”窗口中,将 BackColor 属性设置为白色。

  3. 双击 DataRepeater 打开代码编辑器。

  4. 在代码编辑器中,在“事件”下拉列表中单击“DrawItem”。

  5. DrawItem 事件处理程序中添加下面的代码为 BackColor 提供一个交替值:

    ' Alternate the back color.
    If (e.DataRepeaterItem.ItemIndex Mod 2) <> 0 Then
        ' Apply the secondary back color.
        e.DataRepeaterItem.BackColor = Color.AliceBlue
    Else
        ' Apply the default back color.
        e.DataRepeaterItem.BackColor = DataRepeater1.BackColor
    End If
    
    // Alternate the back color.
    if ((e.DataRepeaterItem.ItemIndex % 2) != 0)
    // Apply the secondary back color.
    {
        e.DataRepeaterItem.BackColor = Color.AliceBlue;
    }
    else
    {
        // Apply the default back color.
        e.DataRepeaterItem.BackColor = dataRepeater1.BackColor;
    }
    
  6. DrawItem 事件处理程序中添加下面的代码,以根据条件更改某个标签的 ForeColor:

    If e.DataRepeaterItem.Controls(RegionTextBox.Name).Text _
     = "" Then
        e.DataRepeaterItem.Controls("RegionLabel"). _
         ForeColor = Color.Red
    Else
        e.DataRepeaterItem.Controls("RegionLabel"). _
         ForeColor = Color.Black
    End If
    
    if (e.DataRepeaterItem.Controls[regionTextBox.Name].Text == "")
    {
        e.DataRepeaterItem.Controls["regionLabel"].ForeColor = Color.Red;
    }
    else
    {
        e.DataRepeaterItem.Controls["regionLabel"].ForeColor = Color.Black;
    }
    
  7. 按 F5 运行该应用程序并查看自定义的效果。

防止用户添加或删除记录

在此可选步骤中,您将添加代码来防止用户在 DataRepeater 控件中添加或删除记录。

防止用户添加和删除记录

  1. 在 Windows 窗体设计器中双击窗体打开代码编辑器。

  2. 将下面的代码添加到 Form_Load 事件中:

    DataRepeater1.AllowUserToAddItems = False
    DataRepeater1.AllowUserToDeleteItems = False
    BindingNavigatorAddNewItem.Enabled = False
    CustomersBindingSource.AllowNew = False
    BindingNavigatorDeleteItem.Enabled = False
    
    dataRepeater1.AllowUserToAddItems = false;
    dataRepeater1.AllowUserToDeleteItems = false;
    bindingNavigatorAddNewItem.Enabled = false;
    customersBindingSource.AllowNew = false;
    bindingNavigatorDeleteItem.Enabled = false;
    
  3. 在“类名”下拉列表中单击“BindingNavigatorDeleteItem”。在“方法名称”下拉列表中单击“EnabledChanged”。

  4. 将以下代码添加到 BindingNavigatorDeleteItem_EnabledChanged 事件处理程序中:

    If BindingNavigatorDeleteItem.Enabled = True Then
        BindingNavigatorDeleteItem.Enabled = False
    End If
    
    if (bindingNavigatorDeleteItem.Enabled == true)
    {
        bindingNavigatorDeleteItem.Enabled = false;
    }
    
    说明:

    此步骤是必需的,因为每当当前记录发生更改时,BindingSource 都将启用“删除项”按钮。

  5. 按 F5 运行该应用程序。请注意,“删除项”按钮被禁用,您无法通过按 Delete 键来删除项。

向 DataRepeater 控件添加搜索功能

在此可选步骤中,您将实现在 DataRepeater 控件中搜索值的功能。如果找到了搜索字符串,该控件将选中包含该值的项并将该项滚动到视图中。

添加搜索功能

  1. 从“工具箱”中将 TextBox 控件拖到包含 DataRepeater 控件的窗体中。

    将它置于 DataRepeater 控件的下方。

  2. 在“属性”窗口中,将“Name”属性更改为“搜索文本框”。

  3. 从“工具箱”中将 Button 控件拖到包含 DataRepeater 控件的窗体中。将它置于 DataRepeater 控件的下方。

  4. 在“属性”窗口中,将“Name”属性更改为“搜索按钮”。将“Text”属性更改为“搜索”。

  5. 双击 Button 控件打开代码编辑器,并将下面的代码添加到 SearchButton_Click 事件处理程序中。

    Dim foundIndex As Integer
    Dim searchString As String
    searchString = SearchTextBox.Text
    ' Search for the string in the CustomerID field.
    foundIndex = CustomersBindingSource.Find("CustomerID", _
     searchString)
    If foundIndex > -1 Then
        DataRepeater1.CurrentItemIndex = foundIndex
    Else
        MsgBox("Item " & searchString & " not found.")
    End If
    
    int foundIndex;
    string searchString;
    searchString = searchTextBox.Text;
    // Search for the string in the CustomerID field.
    foundIndex = customersBindingSource.Find("CustomerID", searchString);
    if (foundIndex > -1)
    {
        dataRepeater1.CurrentItemIndex = foundIndex;
    }
    else
    {
        MessageBox.Show("Item " + searchString + " not found.");
    }
    
  6. 按 F5 运行该应用程序。在“搜索文本框”中键入一个客户 ID 并单击“搜索”按钮。

向 DataRepeater 添加主表和详细信息表

在此可选步骤中,您将再添加一个 DataRepeater 控件来显示每个客户的相关订单。

添加主表和详细信息表

  1. 从“工具箱”的“Visual Basic PowerPacks”选项卡中再将一个 DataRepeater 控件拖到窗体中。

  2. 在“属性”窗口中,将“Location”属性设置为 465, 25。

  3. 将“Size”属性设置为 315, 600。

  4. 在“数据源”窗口中,展开“Customers”表节点,然后选择“Orders”表的详细信息节点。

  5. 通过单击该表节点上的下拉列表中的“Details”将此“Orders”表的下拉类型更改为“Details”。

  6. 将该“Orders”表节点拖到第二个 DataRepeater 控件的项模板区域(上半部分区域)。

    “OrdersBindingSource”组件和“OrdersTableAdapter”组件即添加到组件栏中。

  7. 按 F5 运行该应用程序。当您在第一个 DataRepeater 控件中选择某个客户时,该客户的订单会显示在第二个 DataRepeater 控件中。

请参见

任务

如何:在 DataRepeater 控件中显示绑定数据 (Visual Studio)

如何:在 DataRepeater 控件中显示未绑定的数据 (Visual Studio)

如何:更改 DataRepeater 控件的布局 (Visual Studio)

如何:在 DataRepeater 控件中显示项标题 (Visual Studio)

如何:在 DataRepeater 控件中搜索数据 (Visual Studio)

如何:使用两个 DataRepeater 控件创建主/详细信息窗体 (Visual Studio)

如何:更改 DataRepeater 控件的外观 (Visual Studio)

如何:禁止添加和删除 DataRepeater 项 (Visual Studio)

DataRepeater 控件疑难解答 (Visual Studio)

概念

DataRepeater 控件简介 (Visual Studio)

修订记录

日期

历史记录

原因

2008 年 7 月

新增主题。

SP1 功能更改。