ASP.NET 2.0數(shù)據(jù)教程:SelectMethod屬性的使用
最后一部我們舉例說明如何顯示雇用周年紀(jì)念在本月份的員工。首先,添加一個(gè)GridView控件到頁(yè)面ProgrammaticParams.aspx,該頁(yè)面在文件夾BasicReporting里。添加一個(gè)新的ObjectDataSource控件作為它的數(shù)據(jù)源。配置ObjectDataSource使用類EmployeesBLL并指定SelectMethod屬性為GetEmployeesByHiredDateMonth(month)。
圖 6: 使用EmployeesBLL 類
SelectMethod: 選擇GetEmployeesByHiredDateMonth(month)方法
最后一屏要求我們給month參數(shù)提供參數(shù)源。既然我們將編碼設(shè)置這個(gè)值,就讓參數(shù)源維持它的默認(rèn)選項(xiàng)None,點(diǎn)擊“完成”。
圖 8: 讓參數(shù)源設(shè)置為None
這將在ObjectDataSource的SelectParameters集合里創(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ù)值,我們需要給ObjectDataSource的Selecting事件添加一個(gè)事件委托。為了實(shí)現(xiàn)這一點(diǎn),到設(shè)計(jì)視圖里在ObjectDataSource上雙擊。另一種方式是選中ObjectDataSource在屬性窗口里點(diǎn)擊黃色閃電小圖標(biāo),然后,直接在Selecting這一欄里雙擊或者輸入一個(gè)你要使用的事件委托的名稱。
圖 9:點(diǎn)擊屬性窗口里的閃電圖標(biāo)列出Web控件的所有事件
兩種途徑都可以在頁(yè)面的代碼隱藏類里增加一個(gè)對(duì)ObjectDataSource的Selecting事件的事件委托。在這個(gè)事件委托里,我們可以通過使用e.InputParameters[parameterName]讀取參數(shù)的值,其中parameterName的值是< asp:Parameter>標(biāo)簽里的屬性Name的值(InputParameters也可以按照索引訪問,用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)通過瀏覽器訪問該頁(yè)面,我們可以看到只有一個(gè)員工是在當(dāng)前月份(三月)雇用的:Laura Callahan,他從1994年3月開始雇用。
圖 10: 雇用周年紀(jì)念日在本月份的員工被顯示出來了
這樣就通過SelectMethod屬性實(shí)現(xiàn)了顯示指定范圍內(nèi)的對(duì)象。
【編輯推薦】