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

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

系列文章導(dǎo)航:

ASP.NET 2.0數(shù)據(jù)教程之一:創(chuàng)建一個(gè)數(shù)據(jù)訪問(wèn)層

ASP.NET 2.0數(shù)據(jù)教程之二:創(chuàng)建一個(gè)業(yè)務(wù)邏輯層

ASP.NET 2.0數(shù)據(jù)教程之三:母板頁(yè)和站點(diǎn)導(dǎo)航

ASP.NET 2.0數(shù)據(jù)教程之四:使用ObjectDataSource展現(xiàn)數(shù)據(jù)

ASP.NET 2.0數(shù)據(jù)教程之五:聲明參數(shù)

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

ASP.NET 2.0數(shù)據(jù)教程之七:使用DropDownList過(guò)濾的主/從報(bào)表

ASP.NET 2.0數(shù)據(jù)教程之八:使用兩個(gè)DropDownList過(guò)濾的主/從報(bào)表

ASP.NET 2.0數(shù)據(jù)教程之九:跨頁(yè)面的主/從報(bào)表

ASP.NET 2.0數(shù)據(jù)教程之十:使用 GridView 和DetailView實(shí)現(xiàn)的主/從報(bào)表

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

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


導(dǎo)言

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

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

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

1: ObjectDataSourceSelected Selecting 事件分別在調(diào)用它的隱含對(duì)象的方法之前和之后觸發(fā)

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

讓我們開(kāi)始吧!

系列文章導(dǎo)航:

ASP.NET 2.0數(shù)據(jù)教程之一:創(chuàng)建一個(gè)數(shù)據(jù)訪問(wèn)層

ASP.NET 2.0數(shù)據(jù)教程之二:創(chuàng)建一個(gè)業(yè)務(wù)邏輯層

ASP.NET 2.0數(shù)據(jù)教程之三:母板頁(yè)和站點(diǎn)導(dǎo)航

ASP.NET 2.0數(shù)據(jù)教程之四:使用ObjectDataSource展現(xiàn)數(shù)據(jù)

ASP.NET 2.0數(shù)據(jù)教程之五:聲明參數(shù)

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

ASP.NET 2.0數(shù)據(jù)教程之七:使用DropDownList過(guò)濾的主/從報(bào)表

ASP.NET 2.0數(shù)據(jù)教程之八:使用兩個(gè)DropDownList過(guò)濾的主/從報(bào)表

ASP.NET 2.0數(shù)據(jù)教程之九:跨頁(yè)面的主/從報(bào)表

ASP.NET 2.0數(shù)據(jù)教程之十:使用 GridView 和DetailView實(shí)現(xiàn)的主/從報(bào)表

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

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


第一步: 添加一個(gè)方法到 EmployeesTableAdapter

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


2: EmployeesTableAdapter里添加一個(gè)查詢

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


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

最后,分別把默認(rèn)的方法名FillByGetDataBy更改為FillByHiredDateMonthGetEmployeesByHiredDateMonth


4: 選擇比FillByGetDataBy更恰當(dāng)?shù)姆椒Q

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


5: 新的方法出現(xiàn)在數(shù)據(jù)集的設(shè)計(jì)界面

系列文章導(dǎo)航:

ASP.NET 2.0數(shù)據(jù)教程之一:創(chuàng)建一個(gè)數(shù)據(jù)訪問(wèn)層

ASP.NET 2.0數(shù)據(jù)教程之二:創(chuàng)建一個(gè)業(yè)務(wù)邏輯層

ASP.NET 2.0數(shù)據(jù)教程之三:母板頁(yè)和站點(diǎn)導(dǎo)航

ASP.NET 2.0數(shù)據(jù)教程之四:使用ObjectDataSource展現(xiàn)數(shù)據(jù)

ASP.NET 2.0數(shù)據(jù)教程之五:聲明參數(shù)

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

ASP.NET 2.0數(shù)據(jù)教程之七:使用DropDownList過(guò)濾的主/從報(bào)表

ASP.NET 2.0數(shù)據(jù)教程之八:使用兩個(gè)DropDownList過(guò)濾的主/從報(bào)表

ASP.NET 2.0數(shù)據(jù)教程之九:跨頁(yè)面的主/從報(bào)表

ASP.NET 2.0數(shù)據(jù)教程之十:使用 GridView 和DetailView實(shí)現(xiàn)的主/從報(bào)表

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

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


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

因?yàn)槲覀兊某绦蚣軜?gòu)使用了單獨(dú)的一層來(lái)處理業(yè)務(wù)邏輯和數(shù)據(jù)邏輯,我們需要在BLL里增加一個(gè)方法,該方法調(diào)用DAL的方法獲取指定月份里雇用的員工。打開(kāi)文件EmployeesBLL.cs并添加下面這個(gè)方法:

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

public Northwind.EmployeesDataTable GetEmployeesByHiredDateMonth(int month)

{

    return Adapter.GetEmployeesByHiredDateMonth(month);

}

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

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

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


6: 使用EmployeesBLL 類(lèi)


7: 選擇GetEmployeesByHiredDateMonth(month)方法

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


8: 讓參數(shù)源設(shè)置為None

系列文章導(dǎo)航:

ASP.NET 2.0數(shù)據(jù)教程之一:創(chuàng)建一個(gè)數(shù)據(jù)訪問(wèn)層

ASP.NET 2.0數(shù)據(jù)教程之二:創(chuàng)建一個(gè)業(yè)務(wù)邏輯層

ASP.NET 2.0數(shù)據(jù)教程之三:母板頁(yè)和站點(diǎn)導(dǎo)航

ASP.NET 2.0數(shù)據(jù)教程之四:使用ObjectDataSource展現(xiàn)數(shù)據(jù)

ASP.NET 2.0數(shù)據(jù)教程之五:聲明參數(shù)

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

ASP.NET 2.0數(shù)據(jù)教程之七:使用DropDownList過(guò)濾的主/從報(bào)表

ASP.NET 2.0數(shù)據(jù)教程之八:使用兩個(gè)DropDownList過(guò)濾的主/從報(bào)表

ASP.NET 2.0數(shù)據(jù)教程之九:跨頁(yè)面的主/從報(bào)表

ASP.NET 2.0數(shù)據(jù)教程之十:使用 GridView 和DetailView實(shí)現(xiàn)的主/從報(bào)表

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

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


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

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

    SelectMethod="GetEmployeesByHiredDateMonth" TypeName="EmployeesBLL">

    <SelectParameters>

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

    </SelectParameters>

</ASP:ObjectDataSource>

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


9:點(diǎn)擊屬性窗口里的閃電圖標(biāo)列出Web控件的所有事件

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

protected void ObjectDataSource1_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)

{

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

}

當(dāng)通過(guò)瀏覽器訪問(wèn)該頁(yè)面,我們可以看到只有一個(gè)員工是在當(dāng)前月份(三月)雇用的:Laura Callahan,他從19943月開(kāi)始雇用。


10: 雇用周年紀(jì)念日在本月份的員工被顯示出來(lái)了

總結(jié)

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

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

祝編程快樂(lè)!

作者簡(jiǎn)介

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

NET技術(shù)ASP.NET 2.0數(shù)據(jù)教程之六:編程設(shè)置ObjectDataSource的參數(shù)值,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产亚洲福利精品一区 | 吃胸亲吻吃奶摸下面免费视频 | 久久a级片 | AV多人爱爱XXx | 88.7在线收听 | ai换脸在线全集观看 | 国产WW高清大片免费看 | 2021国产精品一卡2卡三卡4卡 | 四虎永久在线精品免费A | 亚洲高清中文字幕免费 | 拍床戏被肉高H纯肉H在水 | 日本不卡不码高清免费 | 午夜亚洲动漫精品AV网站 | 国产人妻麻豆蜜桃色 | 亚洲一区精品伊人久久伊人 | 日韩视频中文字幕精品偷拍 | 亚洲精品沙发午睡系列 | 99久久国产极品蜜臀AV酒店 | 久久青草费线频观看国产 | 亚洲国产精品综合久久一线 | 男子扒开美女尿口做羞羞的事 | 国内外成人免费在线视频 | 火影小南被爆羞羞网站 | 色综合久久综合网观看 | 久久婷五月综合色啪首页 | 亚洲精品国产品国语在线试看 | 91免费永久在线地址 | 国产白丝精品爽爽久久久久久蜜臀 | 一本道高清码v京东热 | 国产AV精品久久久免费看 | 胸大的姑娘中文字幕视频 | 欧美ZC0O人与善交的最新章节 | 亚洲视频免费看 | 一区二区视频在线观看高清视频在线 | 国产品无码一区二区三区在线 | 天天狠狠色综合图片区 | 久久久精品久久久久特色影视 | 草莓视频在线看免费高清观看 | 怡春院院日本一区二区久久 | 久久777国产线看观看精品卜 | SM双性精跪趴灌憋尿调教H |