ASP.NET 2.0数据教程之十七: 研究插入、更新和删除的关联事件
### ASP.NET 2.0数据教程之十七:研究插入、更新和删除的关联事件 #### 导言 在本教程中,我们将深入了解ASP.NET 2.0中的数据操作,特别是与GridView、DetailsView以及FormView控件相关的插入、更新及删除操作。这些控件为用户提供了一种直观的方式来进行数据管理,但同时也涉及了一系列复杂的过程和事件,这些事件为我们提供了扩展控件功能的机会。 #### 1. GridView、DetailsView 和 FormView 控件的内置事件 在用户进行数据的添加、更新或删除过程中,这些控件会触发一系列事件。例如,在用户编辑了一条记录并点击保存按钮后,会发生以下步骤: 1. **GridView 控件**会根据当前编辑行的唯一标识字段(通常是通过 `DataKeyNames` 属性指定)组装其 `ObjectDataSource` 的 `UpdateParameters` 参数,同时包括用户输入的值。 2. **GridView 控件**调用其 `ObjectDataSource` 的 `Update()` 方法,后者再调用底层对象的适当方法(例如 `ProductsDAL.UpdateProduct`)。 3. 在更新成功后,数据被重新绑定到 GridView 控件。 #### 2. 触发的事件及其用途 - **GridView 的 RowEditing 事件**:在用户点击编辑按钮时触发,可用于验证是否允许编辑某一行。 - **GridView 的 RowUpdating 事件**:在用户提交更改前触发,可以用来取消或修改即将进行的更新操作。 - **ObjectDataSource 的 Updating 事件**:在调用 `Update()` 方法前触发,提供了修改 `UpdateParameters` 的机会。 - **ObjectDataSource 的 Updated 事件**:在 `Update()` 方法执行完成后触发,可以检查更新操作的影响范围或是否出现了异常。 - **GridView 的 RowUpdated 事件**:在更新操作完成后触发,可以获取有关刚刚完成的操作的额外信息。 #### 3. 自定义编辑界面以更新部分字段 在实际应用中,可能只需要允许用户更新部分字段,而不是所有的字段。例如,我们可能会创建一个GridView,其中只显示ProductName和UnitPrice字段,并允许用户更新这两个字段。由于编辑界面只提供了部分字段,我们需要在 `ObjectDataSource` 的 `Updating` 事件处理程序中编程设置缺失的 `UpdateParameters` 值,或者创建并调用一个新的业务逻辑层方法来处理这种情况。 ##### 示例:仅更新 ProductName 和 UnitPrice 字段 1. **创建新的 GridView**:在ASP.NET页面中创建一个新的GridView,并仅显示ProductName和UnitPrice字段。确保这两个字段是可编辑的。 ```xml <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"> <Columns> <asp:BoundField DataField="ProductName" HeaderText="Product Name" InsertVisible="True" ReadOnly="False" /> <asp:BoundField DataField="UnitPrice" HeaderText="Unit Price" InsertVisible="True" ReadOnly="False" /> </Columns> </asp:GridView> ``` 2. **配置 ObjectDataSource**:配置 ObjectDataSource 以使用现有的BLL方法 `UpdateProduct`,并在 `Updating` 事件处理程序中编程设置缺失的 `UpdateParameters` 值。 ```csharp protected void ObjectDataSource1_Updating(object sender, ObjectDataSourceEventArgs e) { // 获取产品ID int productId = (int)e.InputParameters["ProductID"]; // 获取ProductName和UnitPrice string productName = (string)e.InputParameters["ProductName"]; decimal unitPrice = (decimal)e.InputParameters["UnitPrice"]; // 获取其他必要的字段值 string supplierID = GetSupplierID(productId); string categoryID = GetCategoryID(productId); string quantityPerUnit = GetQuantityPerUnit(productId); // 设置缺失的参数值 e.InputParameters["SupplierID"] = supplierID; e.InputParameters["CategoryID"] = categoryID; e.InputParameters["QuantityPerUnit"] = quantityPerUnit; // 其他必要的参数... } ``` 3. **实现辅助方法**:为了获取缺失的字段值,我们需要实现一些辅助方法,如 `GetSupplierID`, `GetCategoryID`, `GetQuantityPerUnit` 等等。 通过这种方式,我们可以灵活地控制哪些字段可以被用户编辑,同时确保数据的完整性和一致性。 #### 结论 了解并利用ASP.NET 2.0中GridView、DetailsView和FormView控件的事件机制,可以帮助我们更好地控制数据操作过程,从而实现更加灵活和安全的应用程序设计。通过自定义编辑界面并利用 `ObjectDataSource` 的 `Updating` 事件,我们可以有效地实现对部分字段的更新,同时确保数据的一致性和完整性。
剩余24页未读,继续阅读
- 粉丝: 1
- 资源: 27
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助