好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 在ASP.NET 2.0中操作數據之五:聲明參數

在ASP.NET 2.0中操作數據之五:聲明參數

熱門標簽:地圖標注的公司有哪些 天心智能電銷機器人 代理接電話機器人如何取消 400電話辦理哪家性價比高 遂寧市地圖標注app 地圖定位圖標標注 塔城代理外呼系統 地圖標注專業團隊 濮陽外呼電銷系統怎么樣

導言

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

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

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

使用一個硬編碼參數值

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

圖 1: 添加一個ObjectDataSource到頁面

這將自動打開ObjectDataSource控件的配置數據源導航。在第一屏的導航中選擇類ProductsBLL 。

圖 2: 選擇類ProductsBLL

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

圖 3: 選擇GetProductByProductID(productID) 方法

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

圖 4: 參數productID使用硬編碼的值

  完成了配置數據源向導后,ObjectDataSource控件的聲明標記里就包含了一個SelectParameters集合,每一個SelectMethod屬性里指定的方法的參數都對應一個Parameter對象。既然我們這個例子中的方法只要求一個參數parameterID ,那么SelectParameters集合里也就只有一個元素。SelectParameters集合可以包含任何來源于System.Web.UI.WebControls命名空間的類。因為是硬編碼參數值所以使用基本的Parameter類;如果需要的話你也可以創建自定義參數類型(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>

  注意:如果你在自己的電腦上跟隨這些步驟聲明標記,你可能會看見這里包含InsertMethod,UpdateMethod和 DeleteMethod 的參數值,比如DeleteParameters 。ObjectDataSource的選擇數據源向導自動地指定了這些ProductBLL的方法從而實現插入、更新和刪除,因此,除非你明確地清除它們,否則它們將包含在上面的標記里。

  當訪問本頁面,Data Web服務器控件將調用ObjectDataSource的Select方法,這將調用類ProductsBLL的GetProductByProductID(productID),并使用“5”這個硬編碼的值作為輸入參數productID 。此方法將返回一個強類型的ProductDataTable對象,它包含一個數據行 - Chef Anton's Gumbo Mix的信息(ProductID為5的產品)。

圖 5: 顯示Chef Anton's Gumbo Mix的相關信息

設置Web控件的屬性作為參數源

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

圖 6: 添加一個ID為CountryName的TextBox控件到頁面

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控件到頁面,從它的智能標記,選擇添加一個新的ObjectDataSource 。因為我們要顯示供應商信息,所以在配置數據源向導第一屏選擇類SuppliersBLL 。第二屏,選擇GetSuppliersByCountry(country)方法。

圖 7: 選擇GetSuppliersByCountry(country) 方法

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

圖 8: 設置CountryName控件的值作為參數值

ObjectDataSource的聲明標記跟我們的第一個例子會稍有不同。使用一個 ControlParameter替代了標準的Parameter對象。ControlParameter具有一些額外的屬性用來指定Web控件的ID,還有用作參數的屬性值(PropertyName)。配置數據源向導足以幫我們決定,例如TextBox,我們很有可能會使用它的Text屬性作為參數值。然而,如果你需要使用Web控件的一個不同的屬性值,那么你需要在這里更改PropertyName屬性,或者從配置數據源向導里點擊“高級屬性”。

asp:ObjectDataSource ID="ObjectDataSource2" runat="server"

 SelectMethod="GetSuppliersByCountry" TypeName="SuppliersBLL">

 SelectParameters>

  asp:ControlParameter ControlID="CountryName" Name="country" PropertyName="Text"

   Type="String" />

 /SelectParameters>

/asp:ObjectDataSource>

  當第一次訪問該頁面時,文本框CountryName里的內容是空白的。GridView控件仍然會調用ObjectDataSource的Select方法,但是,一個空值會被傳入GetSuppliersByCountry(country)方法。表適配器(TableAdapter)會將這個null值轉換成數據庫里的NULL值(DBNull.Value),然而GetSuppliersByCountry(country)方法所使用的查詢已經寫明在傳入一個NULL值錯位參數@CategoryID時將不會返回任何結果。簡而言之,不會返回任何供應商。

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

圖 9: 顯示出位于Canada的供應商

默認顯示所有供應商

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

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

FROM   Suppliers

WHERE Country = @Country

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

  為了當文本框空白時返回所有的供應商,我們可以在BLL層的GetSuppliersByCountry(country)方法中加入:當參數country為null值時,調用GetSuppliers()方法而其他情況則調用DAL層的GetSuppliersByCountry(country)方法。這將實現以下的效果:當不指定國家時返回所有的國家,而當提供了country參數則返回適當的供應商子集。

更改類SuppliersBLL的GetSuppliersByCountry(country)方法,如下:

public Northwind.SuppliersDataTable GetSuppliersByCountry(string country)

{

 if (string.IsNullOrEmpty(country))

  return GetSuppliers();

 else

  return Adapter.GetSuppliersByCountry(country);

}

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

圖 10: 現在,默認顯示所有供應商

總結

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

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

祝編程快樂!

作者簡介

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

您可能感興趣的文章:
  • 在ASP.NET 2.0中操作數據之一:創建一個數據訪問層
  • 在ASP.NET 2.0中操作數據之二:創建一個業務邏輯層
  • 在ASP.NET 2.0中操作數據之三:創建母版頁和站點導航
  • 在ASP.NET 2.0中操作數據之四:使用ObjectDataSource展現數據
  • 在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實現的主/從報表
  • [翻譯]Scott Mitchell 的ASP.NET 2.0數據教程

標簽:重慶 本溪 吉林 河南 宜春 婁底 麗江 汕頭

巨人網絡通訊聲明:本文標題《在ASP.NET 2.0中操作數據之五:聲明參數》,本文關鍵詞  在,ASP.NET,2.0,中,操作,數據,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《在ASP.NET 2.0中操作數據之五:聲明參數》相關的同類信息!
  • 本頁收集關于在ASP.NET 2.0中操作數據之五:聲明參數的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 一边播新闻一边啪啪番号| 精品三级久久久久电影 剧情介绍| 亚欧洲精品在线视频免费观看| 狠狠色噜噜狠狠狠狠69| 美女被?到高潮喷出白浆www| 99久久精品一区三区野外| 久久免费资源福利资源站| 日本viboss孕妇| 日本边摸边吃奶边做很爽视频| 宝贝c我想摸你奶让我揉揉说说| 国产一级婬片A片AAA片口技| 亚洲熟悉妇女XXX妇女AV| bl在教室里被学霸c到哭H| 98亭亭玉立国色天香四月天科普| 天天操夜夜操免费视频| 国产麻豆剧看黄在线观看| 黄软件在线观看| 丝袜theporn| 扒开双腿羞辱调教play视频| 情侣偷偷看的羞羞视频网站| 中文字幕侵犯一色桃子视频| 黄色一级片免费观看| 女扑扒开露秘?让人爽桶| 楚晚宁被塞橘子是哪一章| 亚东县| 国产乱婬AV在线观看久夜色撩人| 女人扒开双腿让男人桶| 香蕉视频aqq| 女学生洗澡自慰wwww久久| 白浆少妇在线mv| 女生胸部裸照| japanesefree夫妇互换| 91精品国产麻豆91久久久久久| 美女把腿扒开让男人桶| 手机看片日韩日韩| 出租熟女欧巴桑| 蜜桃完整版免费观看| 毛片网站网址| 梁朝伟把汤唯的奶摸硬了| 探头探脑来探案免费观看| 8050午夜伦电影|