返回“ASP.NET 2.0數據教程目錄”
導言
正如我們在上一節的教程中所看到的,有很多可供選擇的方式把參數 的值傳遞到OjbectDataSource的方法裡。假如參數值是采用硬編碼方式,來源於 頁面上的一個Web控件,又或者其他可被數據源Parameter對象讀取的源,那麼這 個值可以綁定到輸入參數而不需要寫一行的代碼。
然而有些時候,參數值 來自某些在數據源的內置Parameter對象裡還沒有計算出來的源。假如我們的站點 支持我們的考慮那麼我們也許希望參數基於當前登錄用戶。又或者我們在參數傳 送到ObjectDataSource的隱含對象的方法前做一些客戶化定制。
無論什麼 時候調用ObjectDataSource的Seelect方法,它都會首先觸發它的Selecting事件 ,然後才調用ObjectDataSource的隱含對象的方法,完成後則激發 ObjectDataSource ObjectDataSource的Selected 事件(圖一說明這些事件的順 序)。可以在Selecting事件的事件委托中對參數的值進行設置或更改。
圖 1: ObjectDataSource的Selected 和 Selecting 事件分別在調用它 的隱含對象的方法之前和之後觸發
這一節裡我們將看看添加一個接受一個輸入 參數方法到DAL和BLL層,參數名為Month,int類型,方法返回一個 EmployeesDataTable對象,裡邊包含的是雇傭周年紀念都指定月份的雇員。我們 的例子將編碼設置為基於當前月份,顯示一個“本月雇用周年紀念員工 ”列表。
讓我們開始吧!
第一步: 添加一個方法到 EmployeesTableAdapter
在我們的第一個例子裡,我們需要添加一個方法來獲 取那些雇用日期(HireDate)在某個指定月份的員工。在我們的程序架構下為了 提供這個功能,我們首先需要在通過特定SQL語句映射出來的 EmployeesTableAdapter中創建一個方法。為了實現這一點,首先打開Northwind 類型化數據集,在EmployeesTableAdapter標簽上右鍵選擇“添加查詢 ”。
圖 2: 在 EmployeesTableAdapter裡添加一個查詢
選擇返回一個或 多個行和列的SQL語句。當到達指定SELECT語句窗口時,EmployeesTableAdapter 已經裝載了默認的SELECT語句。簡單地,添加一個WHERE子句:WHERE DATEPART (m, HireDate) = @Month 。其中DATEPART是T-SQL裡的一個函數,用作返回日期 類型的一部分;在這裡,我們使用DATEPART函數返回雇用日期(HireDate)列的 月份部分。
圖 3: 僅返回 HireDate 列的值小於等於參數 @HiredBeforeDate的行