宝哥软件园

ASP.NET 2.0中的运行数据XVII:研究插入、更新和删除的相关事件

编辑:宝哥软件园 来源:互联网 时间:2021-11-01

介绍

当使用GridView、DetailsView或FormView控件的内置插入、编辑或删除功能时,在添加新记录或更新/删除现有记录的过程中会发生几个步骤。正如我们在上一节中所讨论的,在GridView中编辑一行时,“更新”和“取消”按钮将替换“编辑”按钮,绑定的列将转换为文本框。用户更新数据并单击“保存”按钮后,在返回过程中会执行以下步骤:

1.GridView控件根据当前编辑行的唯一标识字段(通过DataKeyNames属性),以及用户输入的值,组装其ObjectDataSource的UpdateParameters参数。

2.GridView控件调用其对象数据源的Update()方法,该方法又调用潜在对象(ProductsDAL)的适当方法。更新产品,在我们前面的部分)。

3.现在,这些隐藏的数据,包括保存的更改,被重新绑定到GridView控件。

在这一系列步骤中,会触发许多事件,这允许我们创建事件处理程序,以便在必要时添加自定义逻辑。例如,在步骤1之前,触发GridView的事件。在这里,如果有任何验证错误,我们可以取消更新请求。当调用Update()方法时,会触发ObjectDataSource的Update事件,这为增加或自定义UpdateParameters的值提供了机会。对象数据源的更新事件在对象数据源的潜在对象的方法完全执行后触发。更新事件的事件处理程序可以检查有关更新操作的详细信息,例如有多少行数据受到影响,或者是否引发了异常。最后,在步骤2之后,触发GridView的RowUpdated事件;此事件的事件处理程序可以检查关于刚刚完成的更新操作的附加信息。

图1描述了使用GridView更新时的这一系列连续事件和步骤。图1中的事件模式不仅是GridView中的更新操作。当从GridView、DetailsView或FormView中插入、更新或删除数据时,这一系列前级和后级事件将发生在数据网络服务器控件和对象数据源中。

//files.jb51.net/file_images/article/201605/2016050709475519.png

图1:在GridView中更新数据时,会触发一系列前置和后置事件。

在本节中,我们将讨论如何使用这些事件来扩展ASP.NET数据网络服务器控件的内置插入、更新和删除功能。我们还将了解如何自定义编辑界面,以仅更新某些产品字段。

第一步:是更新产品的产品名称和单价字段。

在上一节的编辑界面中,包含了产品的所有字段,并且这些字段不是只读的。如果我们从GridView(数量单位)中删除一列,数据网络服务器控件将不会在更新时设置对象数据源的数量单位更新参数的值。ObjectDataSource向UpdateProduct传递一个空值,UpdateProduct是一个业务逻辑层方法,它将当前编辑的数据库记录的QuantityPerUnit字段更改为一个值。同样,如果它是必填字段,如ProductName,如果它被排除在编辑界面之外,更新将失败并引发“列‘ProductName’不允许为空”的异常。出现这种现象的原因是ObjectDataSource被配置为调用ProductsBLL类的UpdateProduct方法,该方法期望每个产品字段对应一个输入参数。因此,ObjectDataSource的UpdateParameters集合包含此方法的每个输入参数。

如果我们想提供一个允许最终用户只更新某些字段的数据Web服务器控件,那么我们需要在ObjectDataSource的update事件处理程序中以编程方式设置缺少的UpdateParameters值,或者创建并调用一个需要某些字段的BLL方法。让我们在接下来的步骤中讨论它。

特别是,让我们创建一个页面,在可编辑的GridView中只显示ProductName和UnitPrice字段。GridView的编辑界面将只允许用户更新显示的两个字段,ProductName和UnitPrice。因为这个编辑界面只提供了产品的一些字段,我们需要创建一个ObjectDataSource,它使用现有BLL的UpdateProdu。

更多资讯
游戏推荐
更多+