4数据绑定控件中启用动态数据

[来源] 达内    [编辑] 达内   [时间]2012-06-19

本部分演示如何配置动态绑定控件,以使它可以使用页模板和验证等从数据库架构或从自定义元数据中推断的功能。您的应用程序仅需启用动态数据即可使用这些功能。该控件用于显示和更改SalesOrderDetail表中包含的值。

 本部分演示如何配置动态绑定控件,以使它可以使用页模板和验证等从数据库 架构或从自定义元数据中推断的功能。您的应用程序仅需启用动态数据即可使用这些功能。该控件用于显示和更改SalesOrderDetail表中包含的值。

第一步是配置数据源控件,用以与数据库交互。
添加网页和数据源控件
·在“Solution Explorer”中右击项目名称,然后单击“Add”。
·单击“new Item”。
·在“已安装的模板”下的左侧窗格中,单击“Web”。
·在中心窗格中,单击“Web Form”。
·在“Name”框中,输入EnableDynamicData.aspx,然后单击“添加”。
·切换到“Design”视图。
·从“toolbox”的“data”组中,将一个ObjectDataSource控件添加到该页上。
·在“ObjectDataSource Tasks”菜单上,单击“Configure Data Source”。
此时将显示“Choose a Business Object”对话框。
·在“Choose your Business Object”列表中,选择您在前一过程中创建的ProcessingOrderDetails类。
·单击“Next”。
将显示“Define Data Methods”对话框。
·在“Choose a method”选项卡窗格的“Select”列表中,选择GetSalesOrderDetails方法。
·单击“Update”选项卡。
·在“Update”选项卡窗格的“Choose a method”列表中,选择Update方法。
·单击“finish”。
您已经将数据源控件配置为使用ProcessingOrderDetails类来通过数据模型与数据库交互。
下一步是创建数据绑定控件并对其启用动态数据。然后,该控件可以依赖于动态数据功能来创建用于显示和编辑数据的UI。
配置数据绑定控件以启用动态数据功能
·从“Toolbox”的“Data”组中,将一个GridView控件添加到该页上。
·在“GridView Tasks”菜单的“Choose Data Source”列表中,选择ObjectDataSource1。
这是您在前一过程中创建的ObjectDataSource控件的ID。
·启用paging、editing和selection。
·切换到“Source”视图。
·在GridView控件的Columns元素中,删除所有自动生成的DataBoundField控件。(保留CommandField元素。)
·通过将AutoGenerateColumns特性设置为true启用列的自动生成功能,如下面的示例所示:
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
  DataSourceID="ObjectDataSource1" AutoGenerateColumns="True" >
    <Columns>
      <asp:CommandField 
        ShowEditButton="True" ShowSelectButton="True" /> 
    </Columns>
</asp:GridView>
·保存并关闭EnableDynamicData.aspx文件。
·打开EnableDynamicData.aspx.cs类文件。
·添加对System.Web.DynamicData命名空间的引用,如下面的示例所示:
using System.Web.DynamicData
·在Page_Init方法中对GridView控件启用动态数据,如下面的示例所示:
protected void Page_Init()
  {
    GridView1.EnableDynamicData(typeof(SalesOrderDetail));
  }
·保存并关闭文件。
·重新生成应用程序。
测试动态数据功能

本节演示如何通过验证以下内容来测试动态数据功能是否已集成到GridView控件中:
·    该自定义业务逻辑与数据库正确交互。
·    对数据字段的更改进行动态数据验证。
·    动态数据生成错误消息,这些错误消息基于动态数据从数据库架构元数据中推断的信息。
测试动态数据功能
·在“Solution Explorer”中,右击EnableDynamicData.aspx页,然后单击“在浏览器中查看”。
浏览器中显示一个页面,其中显示SalesOrderDetail表。
·验证显示的SalesOrderDetails数据字段是否正确。
·在任意行上单击“Edit”,为UnitPrice列输入一个非数字值。
·在同一行上,单击“Update”。
动态数据将显示一条错误消息,警告您UnitPrice字段必须为十进制值。请注意,用于编辑的UI基于动态数据默认模板。
·在同一行上,单击“Cancel”。
·在任意行上单击“Edit”,然后将OrderQty列更改为一个小于或等于数据库允许的最大整数(32767)的值。
·在同一行上,单击“Update”。
动态数据将更新该数据库。由于您输入的值有效,数据会通过动态数据验证。
·在任意行上单击“Edit”,然后将OrderQty列更改为一个大于数据库允许的最大整数(32767)的值。
·在同一行上,单击“Update”。
动态数据会显示一条错误消息,指出您输入了无效的值。
·在同一行上,单击“Cancel”。
这表明动态数据功能已集成到GridView控件中,而且它使用从数据库架构中获得的元数据信息。验证是应用程序从动态数据中继承的功能的一部分。
·关闭浏览器。
添加自定义数据信息

在本部分演练中,您会向数据库架构中添加自定义信息(元数据)。动态数据在处理数据字段时使用该元数据。例如,您可 以为数据库允许的数据字段以外的数据字段定义值范围。在本演练中,您将添加自定义信息以要求UnitPrice值(对数据库来说不是必需字段)并设置 OrderQty值的范围。
提供自定义元数据
·在“Solution Explorer”中,右击项目名称,然后选择“Add Refereence”。
即会显示“Add Reference”对话框。
·单击“.NET”选项卡。
·从列表中选择System.ComponentModel.DataAnnotations。
·单击“OK”。
·打开EnableDynamicData.aspx.cs文件。
·将下面的代码复制到该文件中,这样会替换文件中的所有已有代码。
 
using System.ComponentModel.DataAnnotations;

namespace EnableDynamicData
{
  [MetadataType(typeof(SalesOrderDetailMetadata))]
  public partial class SalesOrderDetail
  {
    public class SalesOrderDetailMetadata
    {
      [Required]
      public string UnitPrice { get; set; }

      [Range(0, 100)]
      public decimal OrderQty { get; set; }

    }
  }
}
 
此代码创建两个类:名为SalesOrderDetail的分部类及其内部的名为SalesOrderDetailMetadata的类。
这些类扩展数据模型,能让您执行以下任务:
·    向UnitPrice数据字段中添加元数据以防止出现空值。(AdventureWorks数据库允许UnitPrice数据字段为空值。)当用户尝试输入空值时,动态数据将发出错误消息。
·    向OrderQty数据字段中添加元数据以设置允许的范围。AdventureWorks数据库对OrderQty数据字段没有范围限制。当用户尝试输入超出允许范围的值时,动态数据将发出错误消息。
以这种方式使用分部类可提供一种灵活的方式来修改数据模型的行为,而不必直接更改数据模型。
·保存并关闭文件。
测试自定义动态数据验证

本部分演示如何测试动态数据是否根据您提供的元数据执行验证。您将测试以下内容:
·    动态数据根据自定义元数据对数据字段的更改进行正确验证。
·    动态数据根据从自定义元数据信息中推断的信息来生成错误消息。
测试自定义动态数据验证
·在“Solution Explorer”中,右击EnableDynamicData.aspx页,然后选择“View in Browser”。
浏览器中显示一个页面,其中显示SalesOrderDetails表。
·在任一行上,单击“Edit”并清除UnitPrice列值。
·在同一行上,单击“Update”。
动态数据将显示一条错误消息,警告您UnitPrice字段是必需的。这表明动态数据验证已集成到GridView控件中,而且它使用您提供的自定义元数据信息。
·在同一行上,单击“Cancel”。
·在任意行上单击“Edit”,然后将OrderQty列更改为允许范围内的值,如25。
·在同一行上,单击“Update”。
动态数据将更新该数据库。由于您输入的值有效,数据会通过验证。
·在任意行上单击“Edit”,然后将OrderQty列更改为允许范围外的值,如250。
·在同一行上,单击“Update”。
动态数据将显示一条错误消息,指出数据字段值必须介于0和100之间。这表明已经使用自定义元数据信息,将动态数据验证集成到GridView控件中。
·在同一行上,单击“Cancel”。

资源下载