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

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

系统必备

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

如果没有在开发计算机中安装此数据库,可以从 Microsoft 下载中心进行下载。 有关说明,请参见Downloading Sample Databases (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. 在**“选择您的数据连接”**页上执行下列步骤之一:

  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”**属性更改为 SearchTextBox。

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

  4. 在“属性”窗口中,将**“Name”属性更改为 SearchButton。 将“Text”**属性更改为 Search。

  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)