一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

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

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

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

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

ASP.NET 2.0數(shù)據(jù)教程之三:母板頁和站點導(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過濾的主/從報表

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

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

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

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

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


ASP.NET 2.0中操作數(shù)據(jù)::聲明參數(shù)

導(dǎo)言

在上一章的教程中,我們看了GridViewDetailsViewFormView綁定到OjbectDataSource控件顯示數(shù)據(jù)ObjectDataSource調(diào)用了類ProductsBLLGetProducts()方法。方法GetProducts()返回一個有Northwind數(shù)據(jù)庫的Products表的所有記錄組成的強類型數(shù)據(jù)表。類ProductsBLL還包含了其它返回部分?jǐn)?shù)據(jù)的方法:GetProductByProductID(productID)GetProductsByCategoryID(categoryID) GetProductsBySupplierID(supplierID) 。這三個方法要求輸入一個參數(shù)來指示如何篩選返回的產(chǎn)品信息數(shù)據(jù)。

ObjectDataSource可以調(diào)用需要傳入?yún)?shù)的方法,不過為了實現(xiàn)這一點,我們需要指定這些參數(shù)從哪里獲取值。這些參數(shù)的值可以通過硬代碼傳入,也可以從某類來源動態(tài)地獲取,包括:查詢字符串的值(QueryString),會話變量(Session variables),頁面上控件的屬性值,或者其它。

在這一章的教程里,讓我們開始舉例說明如何使用參數(shù)設(shè)置一個硬編碼的值。特別地,我們將著眼于添加一個DetailsView到頁面來顯示一個名為Chef Anton’s Gumbo Mix的特殊產(chǎn)品,它的ProductID5 。下一步,我們將看看如何基于Web控件設(shè)置參數(shù)的值。特別地,我們將使用一個TextBox讓用戶鍵入國家(country),在點擊某個按鈕后列出駐該國家的供應(yīng)商。

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

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

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

ASP.NET 2.0數(shù)據(jù)教程之三:母板頁和站點導(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過濾的主/從報表

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

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

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

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

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


使用一個硬編碼參數(shù)值

第一個例子,首先添加一DetailsView控件到BasicReporting文件夾里的DeclarativeParams.ASPx頁面。從DetailsView控件的智能標(biāo)記的下拉列表中選擇<新建數(shù)據(jù)源…>,然后選擇添加一個ObjectDataSource


1: 添加一個ObjectDataSource到頁面

這將自動打開ObjectDataSource控件的配置數(shù)據(jù)源導(dǎo)航。在第一屏的導(dǎo)航中選擇類ProductsBLL

2: 選擇類ProductsBLL

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

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

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

ASP.NET 2.0數(shù)據(jù)教程之三:母板頁和站點導(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過濾的主/從報表

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

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

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

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

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


既然我們要顯示一個特定的產(chǎn)品的信息,我們應(yīng)該使用GetProductByProductID(productID)方法。


3: 選擇GetProductByProductID(productID) 方法

因為我們選擇了這個包含參數(shù)的方法,導(dǎo)航就多了一屏,在這一屏要求我們定義參數(shù)所用的值。在左邊的列表中顯示我們指定方法的所有參數(shù)。對于GetProductByProductID(productID)方法則只有一個參數(shù):productID 。在右邊的參數(shù)源下拉列表中列舉出有可能被作為參數(shù)源的幾類參數(shù)值。既然我們要指定一個硬編碼的值5用作productID參數(shù),就讓參數(shù)源選項是None并在DefaultValue輸入框鍵入5

4: 參數(shù)productID使用硬編碼的值

完成了配置數(shù)據(jù)源向?qū)Ш螅?/span>ObjectDataSource控件的聲明標(biāo)記里就包含了一個SelectParameters集合,每一個SelectMethod屬性里指定的方法的參數(shù)都對應(yīng)一個Parameter對象。既然我們這個例子中的方法只要求一個參數(shù)parameterID ,那么SelectParameters集合里也就只有一個元素。SelectParameters集合可以包含任何來源于System.Web.UI.WebControls命名空間的類。因為是硬編碼參數(shù)值所以使用基本的Parameter類;如果需要的話你也可以創(chuàng)建自定義參數(shù)類型(custom parameter types)。

<ASP:ObjectDataSource ID="ObjectDataSource1" runat="server"

    SelectMethod="GetProductByProductID" TypeName="ProductsBLL">

    <SelectParameters>

        <ASP:Parameter DefaultValue="5" Name="productID" Type="Int32" />

    </SelectParameters>

</ASP:ObjectDataSource>

注意:如果你在自己的電腦上跟隨這些步驟聲明標(biāo)記,你可能會看見這里包含InsertMethodUpdateMethod DeleteMethod 的參數(shù)值,比如DeleteParameters ObjectDataSource的選擇數(shù)據(jù)源向?qū)ё詣拥刂付诉@些ProductBLL方法從而實現(xiàn)插入、更新和刪除,因此,除非你明確地清除它們,否則它們將包含在上面的標(biāo)記里。

當(dāng)訪問本頁面,Data Web服務(wù)器控件將調(diào)用ObjectDataSourceSelect方法,這將調(diào)用類ProductsBLLGetProductByProductID(productID),并使用“5”這個硬編碼的值作為輸入?yún)?shù)productID 。此方法將返回一個強類型的ProductDataTable對象,它包含一個數(shù)據(jù)行 - Chef Anton’s Gumbo Mix的信息(ProductID5的產(chǎn)品)。


5: 顯示Chef Anton’s Gumbo Mix的相關(guān)信息

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

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

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

ASP.NET 2.0數(shù)據(jù)教程之三:母板頁和站點導(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過濾的主/從報表

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

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

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

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

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


設(shè)置Web控件的屬性作為參數(shù)源

OjbectDataSource控件的參數(shù)值也可以設(shè)置為基于頁面上的Web控件的值。為了說明這一點,我們舉一個使用GridView來顯示位于用戶指定的國家的供應(yīng)商的例子。首先,在頁面上添加一個TextBox控件讓用戶輸入國家名稱。這個TextBox控件的ID屬性設(shè)為CountryName 。再添加一個按鈕控件到頁面。


6: 添加一個IDCountryNameTextBox控件到頁面

Next, add a GridView to the page and, from the smart tag, choose to add a new ObjectDataSource. Since we want to display supplier information select the SuppliersBLL class from the wizard’s first screen. From the second screen, pick the GetSuppliersByCountry(country) method.

然后,添加一個GridView控件到頁面,從它的智能標(biāo)記,選擇添加一個新的ObjectDataSource 。因為我們要顯示供應(yīng)商信息,所以在配置數(shù)據(jù)源向?qū)У谝黄吝x擇類SuppliersBLL 。第二屏,選擇GetSuppliersByCountry(country)方法。

7: 選擇GetSuppliersByCountry(country) 方法

因為GetSuppliersByCountry(country)方法有一個輸入?yún)?shù),所以向?qū)г俅物@示最后一屏,讓你選擇參數(shù)的值。這一次,設(shè)置參數(shù)源為Control,這時會出現(xiàn)一個ControlID下拉列表,列表中包含頁面上所有控件的名稱;從中選擇CountryName控件。由于第一次訪問本頁面時文本框CountryName會為空白,那么就沒有值從它返回,也就不顯示任何數(shù)據(jù)。如果你希望默認(rèn)顯示一些結(jié)果,那么要在DefaultValue文本框里輸入一個默認(rèn)的參數(shù)值。


8: 設(shè)置CountryName控件的值作為參數(shù)值

ObjectDataSource的聲明標(biāo)記跟我們的第一個例子會稍有不同。使用一個 ControlParameter替代了標(biāo)準(zhǔn)的Parameter對象。ControlParameter具有一些額外的屬性用來指定Web控件的ID,還有用作參數(shù)的屬性值(PropertyName)。配置數(shù)據(jù)源向?qū)ё阋詭臀覀儧Q定,例如TextBox,我們很有可能會使用它的Text屬性作為參數(shù)值。然而,如果你需要使用Web控件的一個不同的屬性值,那么你需要在這里更改PropertyName屬性,或者從配置數(shù)據(jù)源向?qū)Ю稂c擊“高級屬性”。

<ASP:ObjectDataSource ID="ObjectDataSource2" runat="server"

    SelectMethod="GetSuppliersByCountry" TypeName="SuppliersBLL">

    <SelectParameters>

        <ASP:ControlParameter ControlID="CountryName" Name="country" PropertyName="Text"

            Type="String" />

    </SelectParameters>

</ASP:ObjectDataSource>

當(dāng)?shù)谝淮卧L問該頁面時,文本框CountryName的內(nèi)容是空白的。GridView控件仍然會調(diào)用ObjectDataSourceSelect方法,但是,一個空值會被傳入GetSuppliersByCountry(country)方法。表適配器(TableAdapter)會將這個null值轉(zhuǎn)換成數(shù)據(jù)庫里的NULL值(DBNull.Value),然而GetSuppliersByCountry(country)方法所使用的查詢已經(jīng)寫明在傳入一個NULL值錯位參數(shù)@CategoryID時將不會返回任何結(jié)果。簡而言之,不會返回任何供應(yīng)商。

一旦訪問正輸入一個國家,然后點擊Show Suppliers按鈕觸發(fā)一次回傳(postback),ObjectDataSourceSelect方法被請求,同時傳遞文本框的Text值作為country參數(shù)。


9: 顯示出位于Canada的供應(yīng)商

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

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

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

ASP.NET 2.0數(shù)據(jù)教程之三:母板頁和站點導(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過濾的主/從報表

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

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

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

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

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


默認(rèn)顯示所有供應(yīng)商

相對于在第一次訪問頁面時不顯示任何供應(yīng)商,我們也許會希望一開始顯示所有的供應(yīng)商,并且允許用戶通過在文本框里輸入國家名稱來縮減列表。當(dāng)文本框空白時,一個null值被傳遞到SuppliersBLLGetSuppliersByCountry(country)方法作為country輸入?yún)?shù)。這個null值繼續(xù)被傳遞到DAL層的GetSupplierByCountry(country)方法,在那里它會被轉(zhuǎn)換成數(shù)據(jù)庫里的NULL值用作下面這個查詢的@Country參數(shù):

SELECT     SupplierID, CompanyName, Address, City, Country, Phone

FROM         Suppliers

WHERE Country = @Country

表達式Country = NULL總是返回False,除非有某些記錄Country字段的值恰好為NULL,否則不返回任何數(shù)據(jù)。

為了當(dāng)文本框空白時返回所有的供應(yīng)商,我們可以在BLL層的GetSuppliersByCountry(country)方法中加入:當(dāng)參數(shù)countrynull值時,調(diào)用GetSuppliers()方法而其他情況則調(diào)用DAL層的GetSuppliersByCountry(country)方法。這將實現(xiàn)以下的效果:當(dāng)不指定國家時返回所有的國家,而當(dāng)提供了country參數(shù)則返回適當(dāng)?shù)墓?yīng)商子集。

更改類SuppliersBLLGetSuppliersByCountry(country)方法,如下:

public Northwind.SuppliersDataTable GetSuppliersByCountry(string country)

{

    if (string.IsNullOrEmpty(country))

        return GetSuppliers();

    else

        return Adapter.GetSuppliersByCountry(country);

}

作了這個更改后,第一訪問頁面DeclarativeParams.ASPx (或者當(dāng)文本框CountryName空白時)將顯示所有的供應(yīng)商。

10: 現(xiàn)在,默認(rèn)顯示所有供應(yīng)商

總結(jié)

為了使用帶輸入?yún)?shù)的方法,我們需要在ObjectDataSourceSelectParameters集合里指定參數(shù)的值。不同的參數(shù)類型允許從不同的參數(shù)源獲取它的值。默認(rèn)的參數(shù)類型使用一個硬編碼的值,但是也可以非常方便地,從querystiringSession變量,cookies,或者用戶從頁面上的Web控件輸入的值獲取參數(shù),甚者不需要寫一行的代碼。

這一章的教程了我們通過多個例子圖解了如何使用在數(shù)據(jù)源中使用參數(shù)。然而,有些時候我們可能需要使用不能為空的參數(shù),例如當(dāng)前日期和時間,或者,如果我們的站點使用了Membership時訪問者的User ID 。這些情況我們可以通過編程預(yù)先設(shè)置ObjectDataSource調(diào)用的方法的參數(shù)值。在下一個章的教程里,我們將看看如何實現(xiàn)這一點。

祝編程快樂!

作者簡介

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

NET技術(shù)ASP.NET 2.0數(shù)據(jù)教程之五:聲明參數(shù),轉(zhuǎn)載需保留來源!

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

主站蜘蛛池模板: 午夜在线播放视频 | 国产精品27页 | 久久亚洲综合伊人 | 亚洲综合色在线 | 久久精品久久久久久久久人 | 精品视频一区二区三区在线播放 | 欧美一级做一a做片性视频 欧美一级做一级做片性十三 | 国产身材极品喷水 在线播放 | 亚洲欧美色中文字幕 | 日本成人在线网址 | 久久综合九色综合97伊人麻豆 | 国产亚洲欧美一区二区三区 | 小美女毛片 | 老太婆性杂交欧美肥老太 | 在线观看精品视频网站www | 色哟哟高清视频在线观看 | 久久国产精品久久久 | 国产激情视频 | 97一区二区三区四区久久 | 精品免费久久久久久久 | 一级做a爰片性色毛片新版的 | 欧美一区二区精品 | 激情视频在线 | 日韩美女视频一区 | 国产精品第一页第一页 | 天天爽天天爽 | 一本色道久久综合亚洲精品高清 | 美女黄色在线观看 | 看毛片视频 | 性久久久久久 | 波多野结衣亚洲一区 | 国产一区二区三区久久精品 | 亚洲国产最新在线一区二区 | 99久久国产综合精品国 | 亚洲精品久 | 亚洲国产色婷婷精品综合在线观看 | 国产一区二区三区在线观看精品 | gogo全球高清人体成人 | 劲爆欧美第1页婷婷 | 欧美日韩视频在线第一区二区三区 | 91在线欧美精品观看 |