亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Scott Mitchell 的ASP.NET 2.0數(shù)據(jù)教程之六::

系統(tǒng) 3342 0

ASP.NET 2.0 中操作數(shù)據(jù) :: 編程設置 ObjectDataSource 的參數(shù)值

下載本教程中的編碼例子 | 下載本教程的PDF版

導言

正如我們在上一節(jié)的教程中所看到的,有很多可供選擇的方式把參數(shù)的值傳遞到 OjbectDataSource 的方法里。假如參數(shù)值是采用硬編碼方式,來源于頁面上的一個 Web 控件,又或者其他可被數(shù)據(jù)源 Parameter 對象讀取的源,那么這個值可以綁定到輸入?yún)?shù)而不需要寫一行的代碼。

然而有些時候,參數(shù)值來自某些在數(shù)據(jù)源的內(nèi)置 Parameter 對象里還沒有計算出來的源。假如我們的站點支持我們的考慮那么我們也許希望參數(shù)基于當前登錄用戶。又或者我們在參數(shù)傳送到 ObjectDataSource 的隱含對象的方法前做一些客戶化定制。

無論什么時候調(diào)用 ObjectDataSource Seelect 方法,它都會首先觸發(fā)它的 Selecting 事件,然后才調(diào)用 ObjectDataSource 的隱含對象的方法,完成后則激發(fā) ObjectDataSource ObjectDataSource Selected 事件(圖一說明這些事件的順序)。可以在 Selecting 事件的 事件委托中對參數(shù)的值進行設置或更改。

Scott Mitchell 的ASP.NET 2.0數(shù)據(jù)教程之六:: 編程設置ObjectDataSource的參數(shù)值
1: ObjectDataSource Selected Selecting 事件分別在調(diào)用它的隱含對象的方法之前和之后觸發(fā)

這一節(jié)里我們將看看添加一個接受一個輸入?yún)?shù)方法到 DAL BLL 層,參數(shù)名為 Month int 類型,方法返回一個 EmployeesDataTable 對象,里邊包含的是雇傭周年紀念都指定月份的雇員。我們的例子將編碼設置為基于當前月份,顯示一個“本月雇用周年紀念員工”列表。

讓我們開始吧!

第一步 : 添加一個方法到 EmployeesTableAdapter

在我們的第一個例子里,我們需要添加一個方法來獲取那些雇用日期( HireDate )在某個指定月份的員工。在我們的程序架構(gòu)下為了提供這個功能,我們首先需要在通過特定 SQL 語句映射出來的 EmployeesTableAdapter 中創(chuàng)建一個方法。為了實現(xiàn)這一點,首先打開 Northwind 類型化數(shù)據(jù)集,在 EmployeesTableAdapter 標簽上右鍵選擇“添加查詢”。

Scott Mitchell 的ASP.NET 2.0數(shù)據(jù)教程之六:: 編程設置ObjectDataSource的參數(shù)值
2: EmployeesTableAdapter 里添加一個查詢

選擇返回一個或多個行和列的 SQL 語句。當?shù)竭_指定 SELECT 語句窗口時, EmployeesTableAdapter 已經(jīng)裝載了默認的 SELECT 語句。簡單地,添加一個 WHERE 子句: WHERE DATEPART(m, HireDate) = @Month 。其中 DATEPART T-SQL 里的一個函數(shù),用作返回日期類型的一部分;在這里,我們使用 DATEPART 函數(shù)返回雇用日期( HireDate )列的月份部分。

Scott Mitchell 的ASP.NET 2.0數(shù)據(jù)教程之六:: 編程設置ObjectDataSource的參數(shù)值
3: 僅返回 HireDate 列的值小于等于參數(shù) @HiredBeforeDate 的行

最后,分別把默認的方法名 FillBy GetDataBy 更改為 FillByHiredDateMonth GetEmployeesByHiredDateMonth

Scott Mitchell 的ASP.NET 2.0數(shù)據(jù)教程之六:: 編程設置ObjectDataSource的參數(shù)值
4: 選擇比 FillBy GetDataBy 更恰當?shù)姆椒Q

點擊“完成”結(jié)束向?qū)Р⒎祷氐綌?shù)據(jù)集的設計界面。這時候 EmployeesTableAdapter 會包含一套新的方法來獲取指定月份雇用的員工。

Scott Mitchell 的ASP.NET 2.0數(shù)據(jù)教程之六:: 編程設置ObjectDataSource的參數(shù)值
5: 新的方法出現(xiàn)在數(shù)據(jù)集的設計界面

第二步 : 在業(yè)務邏輯層添加方法 GetEmployeesByHiredDateMonth( month )

因為我們的程序架構(gòu)使用了單獨的一層來處理業(yè)務邏輯和數(shù)據(jù)邏輯,我們需要在 BLL 里增加一個方法,該方法調(diào)用 DAL 的方法獲取指定月份里雇用的員工。打開文件 EmployeesBLL.cs 并添加下面這個方法:

[System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Select, false)]

public Northwind.EmployeesDataTable GetEmployeesByHiredDateMonth(int month)

{

return Adapter.GetEmployeesByHiredDateMonth(month);

}

和此類里的其他方法一樣, GetEmployeesByHiredDateMonth( month ) 僅僅是簡單地調(diào)用 DAL 并返回結(jié)果。

第三步 : 顯示雇用周年紀念日在本月份的員工

最后一部我們舉例說明如何顯示雇用周年紀念在本月份的員工。首先,添加一個 GridView 控件到頁面 ProgrammaticParams.aspx ,該頁面在文件夾 BasicReporting 里。添加一個新的 ObjectDataSource 控件作為它的數(shù)據(jù)源。配置 ObjectDataSource 使用類 EmployeesBLL 并指定 SelectMethod 屬性為 GetEmployeesByHiredDateMonth( month )

Scott Mitchell 的ASP.NET 2.0數(shù)據(jù)教程之六:: 編程設置ObjectDataSource的參數(shù)值
6: 使用 EmployeesBLL
Scott Mitchell 的ASP.NET 2.0數(shù)據(jù)教程之六:: 編程設置ObjectDataSource的參數(shù)值
7: 選擇 GetEmployeesByHiredDateMonth( month ) 方法

最后一屏要求我們給 month 參數(shù)提供參數(shù)源。既然我們將編碼設置這個值,就讓參數(shù)源維持它的默認選項 None ,點擊“完成”。

Scott Mitchell 的ASP.NET 2.0數(shù)據(jù)教程之六:: 編程設置ObjectDataSource的參數(shù)值
8: 讓參數(shù)源設置為 None

這將在 ObjectDataSource SelectParameters 集合里創(chuàng)建一個未指定參數(shù)值的 Parameter 對象。

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" OldValuesParameterFormatString="original_{0}"

SelectMethod="GetEmployeesByHiredDateMonth" TypeName="EmployeesBLL">

<SelectParameters>

<asp:Parameter Name="month" Type="Int32" />

</SelectParameters>

</asp:ObjectDataSource>

要編碼設置這個參數(shù)值,我們需要給 ObjectDataSource Selecting 事件添加一個事件委托。為了實現(xiàn)這一點,到設計視圖里在 ObjectDataSource 上雙擊。另一種方式是選中 ObjectDataSource 在屬性窗口里點擊黃色閃電小圖標,然后,直接在 Selecting 這一欄里雙擊或者輸入一個你要使用的事件委托的名稱。

Scott Mitchell 的ASP.NET 2.0數(shù)據(jù)教程之六:: 編程設置ObjectDataSource的參數(shù)值
9: 點擊屬性窗口里的閃電圖標列出 Web 控件的所有事件

兩種途徑都可以在頁面的 代碼隱藏類 里增加一個對 ObjectDataSourc e Selecting 事件的事件委托。在這個事件委托里,我們可以通過使用 e.InputParameters[ parameterName ] 讀取參數(shù)的值,其中 parameterName 的值是 <asp:Parameter> 標簽里的屬性 Name 的值( InputParameters 也可以按照索引訪問,用 e.InputParameters[ index ] )。為了把 month 參數(shù)設置為當前月份,需要在 Selecting 事件委托里加入如下代碼:

protected void ObjectDataSource1_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)

{

e.InputParameters["month"] = DateTime.Now.Month;

}

當通過瀏覽器訪問該頁面,我們可以看到只有一個員工是在當前月份(三月)雇用的: Laura Callahan ,他從 1994 3 月開始雇用。

Scott Mitchell 的ASP.NET 2.0數(shù)據(jù)教程之六:: 編程設置ObjectDataSource的參數(shù)值
10: 雇用周年紀念日在本月份的員工被顯示出來了

總結(jié)

雖然可以用特定的方式聲明 ObjectDataSource 的參數(shù)值而不需要寫代碼,編程設置參數(shù)值同樣很容易。我們需要做的僅僅是給 ObjectDataSource Selecting 事件增加一個事件委托,它在調(diào)用隱含對象的方式前觸發(fā),并且通過 InputParameters 集合 手工設置一個或多個參數(shù)值。

本節(jié)結(jié)束 基本 這一章。下一節(jié)我們開始 主從數(shù)據(jù) 一章,這一章里我們將著眼于允許訪問者篩選數(shù)據(jù)和主從數(shù)據(jù)處理的技巧。

祝編程快樂!

作者簡介

Scott Mitchell ,著有六本 ASP/ASP.NET 方面的書,是 4GuysFromRolla.com 的創(chuàng)始人,自 1998 年以來一直應用微軟 Web 技術。 Scott 是個獨立的技 術咨詢顧問,培訓師,作家,最近完成了將由 Sams 出版社出版的新作, 24 小時內(nèi)精通 ASP.NET 2.0 。他的聯(lián)系電郵為 mitchell@4guysfromrolla.com ,也可以通過他的博客 http://ScottOnWriting.NET 與他聯(lián)系。

Scott Mitchell 的ASP.NET 2.0數(shù)據(jù)教程之六:: 編程設置ObjectDataSource的參數(shù)值


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久久久国产精品免费免费不卡 | 三区在线观看 | 日本a∨在线播放高清 | 91资源视频| 欧美a级毛片 | 久久99热只有频精品6不卡 | 精品亚洲综合在线第一区 | 精品小视频在线观看 | 亚洲精品动漫3d一区二区 | 亚洲精品一区二区伦理 | 亚洲精品短视频 | 午夜精品久久久 | 日本一级做人免费视频 | 九一精品| 亚洲高清专区 | 欧美日韩在线成人 | 欧美操穴视频 | 99精品中文字幕 | www.亚洲 | 国产精品乱码高清在线观看 | 狠狠干夜夜 | 2020国产成人免费视频 | 亚洲精品中文字幕字幕 | 成人国产精品免费视频不卡 | 久久精品在线播放 | 妇女毛片| 日韩精品久久久毛片一区二区 | 老司机久久精品 | 久久中文字幕不卡一二区 | 国产三级在线精品男人的天堂 | 一区二区三区精品国产欧美 | 污影院| 美日韩毛片 | 另类亚洲视频 | 午夜色大片在线观看 | 九草伊人 | 久久黄色精品视频 | 久草久草| 997在线观看视频国产 | 欧美一级毛片欧美一级无片 | 91精品国产综合久久久久久 |