现在的位置: 首页 > 综合 > 正文

Scott Mitchell 的ASP.NET 2.0数据教程之十六::概述插入、更新和删除数据

2011年07月18日 ⁄ 综合 ⁄ 共 4601字 ⁄ 字号 评论关闭

ASP.NET 2.0中操作数据::概述插入、更新和删除数据

 

导言

结束前面的几节,我们已经探讨过了如何使用GridViewDetailsViewFormView控件来显示数据。这些控件简单地操作提供给它的数据。一般地,这些控件通过使用一个数据源控件,例如ObjectDataSource来存取数据。我们已经看过了ObjectDataSource是如何在ASP.NET页面和潜在的数据之间扮演一个代理的角色。当一个GridView需要显示数据时,它调用ObjectDataSourceSelect()方法,这个方法转而调用一个来自我们的业务逻辑层(BLL)的方法,继而调用一个适当的数据访问层(DAL)的表适配器(TableAdapter)的方法,从而它发送一个SELECT查询到Northwind数据库。

 

记得在我们的教程里当创建DAL中的表适配器时,Visual Studio自动地添加从潜在数据库插入、更新和删除数据的方法。此外,在建一个业务逻辑层 这一节我们已经设计了调用这些数据更改的DAL方法的BLL方法。

 

除了它的Select()方法,ObjectDataSource还有Insert()Update()Delete()方法。跟Select()方法类似,这三个方法映射到一个隐含的对象。当配置插入、更新或删除数据时,GridViewDetailsViewFormView控件提供了一个修改潜在的数据的用户界面。这个用户界面调用ObjectDataSourceInsert()Update()Delete()方法,它们继而调用隐含对象的关联方法(见图1)。


1: ObjectDataSourceInsert()Update()Delete()方法提供一个到BLL的代理

 

本节我们将看看如何映射ObjectDataSourceInsert()Update()Delete()方法到BLL中的类,也看看如何配置GridViewDetailsViewFormView控件提供修改数据的功能。

 

第一步: 创建InsertUpdateDelete教程页面

在我们开始探讨如何插入、修改和删除数据之前,让我们先花些时间在我们的站点项目里添加这些本节里和下一节里需要的ASP.NET页面。首先添加一个名为EditInsertDelete的新文件夹。然后,在这个文件夹里添加下面这些ASP.NET页面,并且确认每个页面都关联Site.master母版页:

 

·         Default.aspx

·         Basics.aspx

·         DataModificationEvents.aspx

·         ErrorHandling.aspx

·         UIValidation.aspx

·         CustomizedUI.aspx

·         OptimisticConcurrency.aspx

·         ConfirmationOnDelete.aspx

·         UserLevelAccess.aspx

 


2: 添加这些与数据更改关联的教程的页面

 

类似在其它文件夹里,EditInsertDelete文件夹里的Default.aspx将列出这些教程章节。记得用户控件提供这个功能。因此,从解决方案资源管理器中拖拽一个这个用户控件到页面的设计视图,从而添加它到Default.aspx页面。


3: 添加SectionLevelTutorialListing.ascx用户控件到tDefault.aspx页面

 

最后,添加这些页面地址项到Web.sitemap文件。明确地,在Customized Formatting <siteMapNode>后添加如下标记:

 

<siteMapNode title="Editing, Inserting, and Deleting" url="~/EditInsertDelete/Default.aspx" description="Samples of Reports that Provide Editing, Inserting, and Deleting Capabilities">

  <siteMapNode url="~/EditInsertDelete/Basics.aspx" title="Basics" description="Examines the basics of data modification with the GridView, DetailsView, and FormView controls." />

  <siteMapNode url="~/EditInsertDelete/DataModificationEvents.aspx" title="Data Modification Events" description="Explores the events raised by the ObjectDataSource pertinent to data modification." />

  <siteMapNode url="~/EditInsertDelete/ErrorHandling.aspx" title="Error Handling" description="Learn how to gracefully handle exceptions raised during the data modification workflow." />

  <siteMapNode url="~/EditInsertDelete/UIValidation.aspx" title="Adding Data Entry Validation" description="Help prevent data entry errors by providing validation." />

  <siteMapNode url="~/EditInsertDelete/CustomizedUI.aspx" title="Customize the User Interface" description="Customize the editing and inserting user interfaces." />

  <siteMapNode url="~/EditInsertDelete/OptimisticConcurrency.aspx" title="Optimistic Concurrency" description="Learn how to help prevent simultaneous users from overwritting one another&apos;s changes." />

  <siteMapNode url="~/EditInsertDelete/ConfirmationOnDelete.aspx" title="Confirm On Delete" description="Prompt a user for confirmation when deleting a record." />

  <siteMapNode url="~/EditInsertDelete/UserLevelAccess.aspx" title="Limit Capabilities Based on User" description="Learn how to limit the data modification functionality based on the user's role or permissions." />

</siteMapNode>

 

在更新了Web.sitemap后,花些时间通过浏览器访问本教程站点。左边的菜单里现在包含对应编辑、插入和删除教程的项。


4: 站点地图现在包含了对应编辑、插入和删除教程的项

 

 

第二步: 添加并配置ObjectDataSource控件

因为GridViewDetailsViewFormView控件在数据修改功能和版面上都有所不同,就让我们逐个研究。不过,与其让这三个控件各自使用自己的ObjectDataSource,还不如让我们仅创建一个ObjectDataSource让这个三个控件的例子共用。

 

打开Basics.aspx页面,从工具箱拖拽一个ObjectDataSource到设计器,从它的职能标记中点击配置数据源链接。因为ProductsBLL类是唯一一个提供修改、插入和删除方法的BLL类,配置该ObjectDataSource使用这个类。


5: 配置ObjectDataSource使用ProductsBLL

 

在下一屏中,通过选择适当的tab页并从下拉列表中选择方法,我们可以指定ProductsBLL类里的哪些方法被映射到ObjectDataSourceSelect()Insert()Update()Delete()方法。图6,至今我们应该很熟悉,映射ObjectDataSourceSelect()方法到ProductsBLL类的GetProducts()方法。Insert()Update()Delete()方法可以通过选择上方的适当的tab页进行配置。


6: 让这个ObjectDataSource返回所有产品

 

789显示ObjectDataSourceUPDATEINSERT,DELETE tab页。配置它们从而Insert()Update()Delete()方法分别调用ProductsBLL类的UpdateProductAddProductDeleteProduct方法。


7: 映射ObjectDataSourceUpdate()方法到ProductBLLUpdateProduct方法


8: 映射ObjectDataSourceInsert()方法到ProductBLLAddProduct方法

9: 映射ObjectDataSourceDelete()方法到ProductBLLDeleteProduct方法

 

你也许已经注意到在UPDATEINSERTDELETEtab页里的下拉列表中已经选择了各自的方法。这是由于我们使用了DataObjectMethodAttribute ,它修饰了ProducstBLL类。例如,DeleteProduct方法是如下这样子声明的:

 

[System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Delete, true)]

public bool DeleteProduct(int productID)

{

    ...

}

 

DataObjectMethodAttribute指示每一个方法的目的是否为了查询、插入、更新或删除

是否它的默认值。如果你在创建BLL类的时候省略了这些属性,现在你将需要手工从UPDATEINSERTDELETEtab页里手工选择方法。

当确认已经适当的ProductsBLL方法映射到ObjectDataSourceInsert()Update()Delete()方法后,点击完成结束此向导。

 

检查ObjectDataSource的标记

抱歉!评论已关闭.