天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

ASP.NET 2.0數據教程之六:編程設置ObjectDataSource的參數值

系列文章導航:

ASP.NET 2.0數據教程之一:創建一個數據訪問層

ASP.NET 2.0數據教程之二:創建一個業務邏輯層

ASP.NET 2.0數據教程之三:母板頁和站點導航

ASP.NET 2.0數據教程之四:使用ObjectDataSource展現數據

ASP.NET 2.0數據教程之五:聲明參數

ASP.NET 2.0數據教程之六:編程設置ObjectDataSource的參數值

ASP.NET 2.0數據教程之七:使用DropDownList過濾的主/從報表

ASP.NET 2.0數據教程之八:使用兩個DropDownList過濾的主/從報表

ASP.NET 2.0數據教程之九:跨頁面的主/從報表

ASP.NET 2.0數據教程之十:使用 GridView 和DetailView實現的主/從報表

ASP.NET 2.0數據教程之十一:基于數據的自定義格式化

ASP.NET 2.0數據教程之十二:在GridView控件中使用TemplateField


導言

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

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

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

1: ObjectDataSourceSelected Selecting 事件分別在調用它的隱含對象的方法之前和之后觸發

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

讓我們開始吧!

系列文章導航:

ASP.NET 2.0數據教程之一:創建一個數據訪問層

ASP.NET 2.0數據教程之二:創建一個業務邏輯層

ASP.NET 2.0數據教程之三:母板頁和站點導航

ASP.NET 2.0數據教程之四:使用ObjectDataSource展現數據

ASP.NET 2.0數據教程之五:聲明參數

ASP.NET 2.0數據教程之六:編程設置ObjectDataSource的參數值

ASP.NET 2.0數據教程之七:使用DropDownList過濾的主/從報表

ASP.NET 2.0數據教程之八:使用兩個DropDownList過濾的主/從報表

ASP.NET 2.0數據教程之九:跨頁面的主/從報表

ASP.NET 2.0數據教程之十:使用 GridView 和DetailView實現的主/從報表

ASP.NET 2.0數據教程之十一:基于數據的自定義格式化

ASP.NET 2.0數據教程之十二:在GridView控件中使用TemplateField


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

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


2: EmployeesTableAdapter里添加一個查詢

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


3: 僅返回 HireDate 列的值小于等于參數 @HiredBeforeDate的行

最后,分別把默認的方法名FillByGetDataBy更改為FillByHiredDateMonthGetEmployeesByHiredDateMonth


4: 選擇比FillByGetDataBy更恰當的方法名稱

點擊“完成”結束向導并返回到數據集的設計界面。這時候EmployeesTableAdapter會包含一套新的方法來獲取指定月份雇用的員工。


5: 新的方法出現在數據集的設計界面

系列文章導航:

ASP.NET 2.0數據教程之一:創建一個數據訪問層

ASP.NET 2.0數據教程之二:創建一個業務邏輯層

ASP.NET 2.0數據教程之三:母板頁和站點導航

ASP.NET 2.0數據教程之四:使用ObjectDataSource展現數據

ASP.NET 2.0數據教程之五:聲明參數

ASP.NET 2.0數據教程之六:編程設置ObjectDataSource的參數值

ASP.NET 2.0數據教程之七:使用DropDownList過濾的主/從報表

ASP.NET 2.0數據教程之八:使用兩個DropDownList過濾的主/從報表

ASP.NET 2.0數據教程之九:跨頁面的主/從報表

ASP.NET 2.0數據教程之十:使用 GridView 和DetailView實現的主/從報表

ASP.NET 2.0數據教程之十一:基于數據的自定義格式化

ASP.NET 2.0數據教程之十二:在GridView控件中使用TemplateField


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

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

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

public Northwind.EmployeesDataTable GetEmployeesByHiredDateMonth(int month)

{

    return Adapter.GetEmployeesByHiredDateMonth(month);

}

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

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

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


6: 使用EmployeesBLL


7: 選擇GetEmployeesByHiredDateMonth(month)方法

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


8: 讓參數源設置為None

系列文章導航:

ASP.NET 2.0數據教程之一:創建一個數據訪問層

ASP.NET 2.0數據教程之二:創建一個業務邏輯層

ASP.NET 2.0數據教程之三:母板頁和站點導航

ASP.NET 2.0數據教程之四:使用ObjectDataSource展現數據

ASP.NET 2.0數據教程之五:聲明參數

ASP.NET 2.0數據教程之六:編程設置ObjectDataSource的參數值

ASP.NET 2.0數據教程之七:使用DropDownList過濾的主/從報表

ASP.NET 2.0數據教程之八:使用兩個DropDownList過濾的主/從報表

ASP.NET 2.0數據教程之九:跨頁面的主/從報表

ASP.NET 2.0數據教程之十:使用 GridView 和DetailView實現的主/從報表

ASP.NET 2.0數據教程之十一:基于數據的自定義格式化

ASP.NET 2.0數據教程之十二:在GridView控件中使用TemplateField


這將在ObjectDataSourceSelectParameters集合里創建一個未指定參數值的Parameter對象。

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

    SelectMethod="GetEmployeesByHiredDateMonth" TypeName="EmployeesBLL">

    <SelectParameters>

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

    </SelectParameters>

</ASP:ObjectDataSource>

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


9:點擊屬性窗口里的閃電圖標列出Web控件的所有事件

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

protected void ObjectDataSource1_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)

{

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

}

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


10: 雇用周年紀念日在本月份的員工被顯示出來了

總結

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

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

祝編程快樂!

作者簡介

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

NET技術ASP.NET 2.0數據教程之六:編程設置ObjectDataSource的參數值,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产亚洲tv在线观看 | 国产在线观看网址你懂得 | 亲胸揉胸膜下刺激视频在线观看 | 人妻少妇69式99偷拍 | 小伙无套内射老女人 | 儿子你得太大了慢点插 | 人人爽久久久噜噜噜丁香AV | 成品片a免人看免费 | 亚洲AV午夜福利精品香蕉麻豆 | 亚州免费一级毛片 | 99久久蜜臀亚洲AV无码精品 | 曰批视频免费40分钟不要钱 | 色爱区综合激情五月综合激情 | XXX老姥群交 | 免费国产精品视频 | 99热这里只就有精品22 | 国产精品高清在线观看地址 | 国产人妻人伦精品9 | 国产精品99久久免费黑人人妻 | 妈妈的职业3完整版在线播放 | 久久在精品线影院精品国产 | jzz大全18| 国产 高清 无码 中文 | 少妇高潮惨叫久久久久久电影 | 泡妞高手在都市完整版视频免费 | 无人区免费一二三四乱码 | xxxx69动漫| 国语自产拍大学生在线观看 | 新图解av吧 | 日韩黄色软件 | 夜夜躁日日躁狠狠 | 午夜黄视频 | 午夜色情影院色a国产 | 抽插性奴中出乳精内射 | 野花韩国免费高清电影 | 国产最新进精品视频 | 日本精品久久久久中文字幕2 | 亚洲 视频 在线 国产 精品 | 欧美亚洲国产专区在线 | 国产午夜精品一区二区 | 欧美 亚洲 日韩 在线综合 |