返回“ASP.NET 2.0數據教程目錄”
導言
在一個使用了分層體系架構的ASP.NET web應用系統裡處理數據,一般 遵循以下幾步:
1.確定業務邏輯層需要調用哪個方法,並且需要出入哪些 參數。這些參數可以通過硬編碼設置,程序自動設定,或者由用戶輸入。
2.調用此方法。
3.處理結果。當調用一個返回數據的BLL方法時, 這包括綁定數據到Data Web服務器控件。而對於修改數據的BLL方法而言,這包括 基於返回值的基礎上執行某些動作,或者適當地處理在第二步中引發的異常。
正如我們在前一節裡看到的,無論ObjectDataSource控件還是數據Web服 務器控件,都為第1和第3步提供了可擴展性。例如GridView控件,觸發它的 RowUpdating事件之前把它的字段的值賦值到ObjectDataSource的 UpdateParameters集合;在ObjectDataSource完成它的操作之後觸發RowUpdated 事件。
我們已經檢測到第1步中觸發的事件,並且看過了如何使用它們實 現自定義出入參數或者取消操作。這一節我們將把我們的注意力轉到操作完成後 所觸發的事件。通過這些post級的event handler和其它,可以判斷在操作過程中 是否產生了一個異常,並且適當地處理它,在屏幕中顯示友好的錯誤信息要優於 轉到ASP.NET的默認錯誤處理頁。
為了舉例說明這些post級事件的工作方 式,讓我們創建一個頁面,它在一個可編輯的GridView中列出產品信息。當更新 一個產品時,如果引發了一個異常,我們的ASP.NET頁面會在GridView控件的上方 顯示一個簡短的信息,說明出現了一個問題。好吧,讓我們開始!
第一步 : 為產品創建一個可編輯的GridView
這一節裡我們創建一個可編輯的GridView ,它僅僅包含兩個的字段,ProductName和UnitPrice 。這需要為ProductsBLL類 的UpdateProduct方法增加一個額外的重載,它僅僅接受3個輸入參數 (product’s name,unit price,和ID),相對於接受每一個產品的字段 的方法。在本節裡讓我們再一次練習一下這些技巧,創建一個可編輯的GridView ,它顯示產品的name、quantity per unit、unit price、和units in stock,但 僅僅允許name,unit price,和units in stock可編輯。
為了提供這個場 景,我們需要對UpdateProduct方法的另一個重載,它接收4個參數: product’s name,unit price,units in stock和ID。在ProductsBLL類中 添加下面這個方法:
1 [System.ComponentModel.DataObjectMethodAttribute (System.ComponentModel.DataObjectMethodType.Update, false)]
2public bool UpdateProduct(string productName, decimal? unitPrice, short? unitsInStock, int productID)
3{
4 Northwind.ProductsDataTable products = Adapter.GetProductByProductID (productID);
5 if (products.Count == 0)
6 // no matching record found, return false
7 return false;
8
9 Northwind.ProductsRow product = products[0];
10
11 product.ProductName = productName;
12 if (unitPrice == null) product.SetUnitPriceNull();
13 else product.UnitPrice = unitPrice.Value;
14 if (unitsInStock == null) product.SetUnitsInStockNull();
15 else product.UnitsInStock = unitsInStock.Value;
16
17 // Update the product record
18 int rowsAffected = Adapter.Update(product);
19
20 // Return true if precisely one row was updated, otherwise false
21 return rowsAffected == 1;
22}
23