文档首页
MySQL Connector/NET 开发人员指南
相关文档 下载本手册
PDF (US Ltr) - 1.3Mb
PDF (A4) - 1.3Mb


MySQL Connector/NET 开发人员指南  /  Connector/NET 教程  /  教程:使用 LINQ on Entities 在 ASP.NET 中进行数据绑定

6.4 教程:使用 LINQ on Entities 在 ASP.NET 中进行数据绑定

在本教程中,您将创建一个 ASP.NET 网页,该网页使用 Entity Framework 映射与 MySQL Connector/NET 绑定到实体的 LINQ 查询。

如果您尚未这样做,请在尝试本教程之前安装 world 数据库示例。有关下载和安装此数据库的说明,请参阅教程 第 6.3 节,“教程:将 Entity Framework 实体用作 Windows 窗体数据源”

创建 ASP.NET 网站

在本教程的这一部分中,您将创建一个 ASP.NET 网站。该网站使用 world 数据库。主要网页包含一个下拉列表,您可以从中选择一个国家/地区。然后,该国家/地区的城市信息将显示在 GridView 控件中。

  1. 从 Visual Studio 主菜单中选择 文件新建,然后选择 网站

  2. 从 Visual Studio 安装的模板中选择 ASP.NET 网站。单击 确定。默认情况下,您将看到网页的源代码视图。

  3. 单击源代码视图面板下方的“设计视图”选项卡。

  4. 在“设计视图”面板中,输入一些文本以装饰空白网页。

  5. 单击 工具箱。从控件列表中选择 DropDownList。将控件拖放到网页上文本下方的位置。

  6. DropDownList 控件的上下文菜单中,确保选中 启用自动回发 复选框。这将确保在选择一项时调用控件的事件处理程序。用户的选择将反过来用于填充 GridView 控件。

  7. 从工具箱中选择 GridView 控件。将 GridView 控件拖放到您已经放置的下拉列表正下方的位置。

    下图显示了“设计视图”选项卡中装饰文本和两个控件的示例。添加的 GridView 控件生成了一个具有三个列(Column0Column1Column3)的网格,每个单元格中包含字符串 abc

    图 6.18 已放置的 GridView 控件

    Content is described in the surrounding text.

  8. 在此处,建议您保存解决方案,并构建解决方案以确保没有错误。

  9. 如果您运行解决方案,您将看到文本和下拉列表已显示,但列表为空。此外,网格视图根本没有显示。以下部分将介绍如何添加此功能。

在此阶段,您有一个可以构建的网站,但还需要进一步的功能。下一步将使用 Entity Framework 从 world 数据库创建映射到您可以以编程方式控制的实体。

创建 ADO.NET 实体数据模型

在本教程的这一阶段,您将使用存储层中的 world 数据库向项目添加 ADO.NET 实体数据模型。有关执行此操作的步骤,请参阅教程 第 6.3 节,“教程:将 Entity Framework 实体用作 Windows 窗体数据源”,此处不再重复。

使用 Entity LINQ 查询的结果填充列表框

在本教程的这一部分中,您将编写代码以填充 DropDownList 控件。当网页加载时,使用先前创建的模型上的 LINQ 查询的结果将填充列表数据。

  1. 在“设计视图”面板中,双击任何空白区域。这将打开 Page_Load 方法。

  2. 根据以下示例代码列表修改相关代码段。

    ...
    public partial class _Default : System.Web.UI.Page
    {
        worldModel.worldEntities we;
    
        protected void Page_Load(object sender, EventArgs e)
        {
            we = new worldModel.worldEntities();
    
            if (!IsPostBack)
            {
                var countryQuery = from c in we.country
                                   orderby c.Name
                                   select new { c.Code, c.Name };
                DropDownList1.DataValueField = "Code";
                DropDownList1.DataTextField = "Name";
                DropDownList1.DataSource = countryQuery.ToList();
                DataBind();
            }
        }
    ...

    列表控件只需要在页面首次加载时填充。条件代码确保如果页面随后重新加载,列表控件不会重新填充,这会导致用户选择丢失。

  3. 保存解决方案、构建解决方案并运行解决方案。您应该看到列表控件已填充。您可以选择一项,但目前 GridView 控件不会显示。

在此阶段,您有一个可以正常使用的下拉列表控件,该控件由实体数据模型上的 LINQ 查询填充。

使用 Entity LINQ 查询填充网格视图控件

在本教程的最后一部分中,您将使用实体数据模型上的 LINQ 查询填充网格视图控件。

  1. 在“设计视图”中,双击 DropDownList 控件。此操作将显示其 SelectedIndexChanged 代码。当用户在列表控件中选择一项时,将调用此方法,从而生成一个自动回发事件。

  2. 根据以下示例代码列表相应地修改相关代码段。

    ...
        protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {
            var cityQuery = from c in we.city
                            where c.CountryCode == DropDownList1.SelectedValue
                            orderby c.Name
                            select new { c.Name, c.Population, c.CountryCode };
            GridView1.DataSource = cityQuery;
            DataBind();
        }
    ...

    网格视图控件根据实体数据模型上的 LINQ 查询的结果填充。

  3. 保存、构建并运行解决方案。当您选择一个国家/地区时,您将看到其城市显示在 GridView 控件中。下图显示了从列表框中选择的比利时,以及包含三列的表格:NamePopulationCountryCode

    图 6.19 正在工作的网站

    Content is described in the surrounding text.

在本教程中,您了解了如何创建一个 ASP.NET 网站,还了解了如何使用实体数据模型上的 LINQ 查询访问 MySQL 数据库。