成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ASP.NET 2.0數據教程:綁定到ObjectDataSource

開發 后端
本文介紹了如何在asp.net 2.0中添加一個Data Web服務器控件并將它綁定到ObjectDataSource。

在ObjectDataSource添加到頁面并完成配置之后,我們就可以添加一個Data Web服務器控件到頁面來展現通過ObjectDataSource的Select方法返回的數據。所有的Data Web服務器控件都可以綁定到ObjectDataSource;下面我們看看如何將ObjectDataSource的數據展現到GridView、DetailsView、和 FormView 。

綁定一個GridView到ObjectDataSource

從工具箱添加一個GridView控件到頁面SimpleDisplay.aspx的設計界面。從GridView的智能標記,選擇我們在***步中添加的ObjectDataSource控件作為數據源。這將根據ObjectDataSource的Select方法所返回數據的每一個屬性(即類型化數據集Products所定義的屬性)自動地在GridView控件里產生一個綁定列(BoundField)。

添加一個GridView控件到頁面并綁定到ObjectDataSource 

圖6: 添加一個GridView控件到頁面并綁定到ObjectDataSource

通過編輯列對話框管理GridView控件的綁定列 

圖7: 通過編輯列對話框管理GridView控件的綁定列

花一些時間修改GridView控件的綁定列,移除ProductID, SupplierID, CategoryID, QuantityPerUnit, UnitsInStock, UnitsOnOrder, 和 ReorderLevel這幾列。操作很簡單,從左下方的列表中選中這些列然后點擊刪除按鈕(紅色交叉)就可以移除它們。然后,重新排列一下,選中CategoryName 和 SupplierName兩個綁定列并點擊向上箭頭按鈕,使它們排放在UnitPrice列之前。分別設置Products、Category、Supplier和 Price這幾個剩下的綁定列的HeaderText屬性。然后,格式化Price列為貨幣–設置該綁定列的HtmlEncode屬性為False并且設置DataFormatString屬性為{0:c} 。***,通過ItemStyle/HorizontalAlign屬性設置綁定列Price的水平靠右對齊以及CheckBox列Discontinued水平居中顯示。

  1. < asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"    DataKeyNames="ProductID" DataSourceID="ObjectDataSource1" EnableViewState="False">  
  2.  
  3.     < Columns>  
  4.  
  5.         < asp:BoundField DataField="ProductName" HeaderText="Product" SortExpression="ProductName" />  
  6.  
  7.         < asp:BoundField DataField="CategoryName" HeaderText="Category" ReadOnly="True" SortExpression="CategoryName" />  
  8.  
  9.         < asp:BoundField DataField="SupplierName" HeaderText="Supplier" ReadOnly="True" SortExpression="SupplierName" />  
  10.  
  11.         < asp:BoundField DataField="UnitPrice" DataFormatString="{0:c}" HeaderText="Price" 
  12.  
  13.             HtmlEncode="False" SortExpression="UnitPrice">  
  14.  
  15.             < ItemStyle HorizontalAlign="Right" />  
  16.  
  17.         < /asp:BoundField>  
  18.  
  19.         < asp:CheckBoxField DataField="Discontinued" HeaderText="Discontinued" SortExpression="Discontinued">  
  20.  
  21.             < ItemStyle HorizontalAlign="Center" />  
  22.  
  23.         < /asp:CheckBoxField>  
  24.  
  25.     < /Columns>  
  26.  
  27. < /asp:GridView>  
  28.  

GridView控件的綁定列定制完成 

圖 8: GridView控件的綁定列定制完成

 

使用主題(Themes)保持顯示風格的一致

這里會盡可能地移除控件層面的樣式設置,取而代之的是使用在一個外部文件里定義的級聯樣式表。文件Styles.css包含了DataWebControlStyle、HeaderStyle、RowStyle和 AlternatingRowStyle 這幾種CSS樣式可以用來指示Data Web服務器控件的外觀。為了實現這一點,我們可以設置GridView控件的CssClass屬性為DataWebControlStyle,HeaderStyle、RowStyle和 AlternatingRowStyle的CssClass屬性也類似地設置。

如果我們設置了這些CssClass屬性到Web控件,那么我們不得不記得明確地把每一個屬性的值和每一個Data Web服務器控件記錄到我們的手冊中。一種更為方便管理的方法是使用一個Theme定義CSS樣式跟GridView、 DetailsView和FormView控件的屬性之間的關聯關系。Theme是一個控件層面的屬性設置、圖片和CSS樣式的集合,它可以應用到整個站點的所有頁面強制約束外貌和感觀。

我們的Theme將不會包含圖片和CSS文件(我們會把stylesheet Styles.css文件照舊留在web應用程序的根目錄下),但是它會包含兩個外觀(Skin)。外觀是一個包含Web控件的默認屬性設置的文件。特別地,我們將創建一個Skin文件為GridView和 DetailsView定義外觀,標示默認的CssClass關聯的屬性。

在解決方案資源管理器里選中當前項目,從右鍵菜單中選擇“添加新項”,添加一個外觀文件到你的項目并命名為GridView.skin 。

添加一個外觀文件并命名為GridView.skin 

圖9: 添加一個外觀文件并命名為GridView.skin

Skin files need to be placed in a Theme, which are located in the App_Themes folder. Since we don’t yet have such a folder, Visual Studio will kindly offer to create one for us when adding our first Skin. Click Yes to create the App_Theme folder and place the new GridView.skin file there.

外觀文件需要被放置到一個主題里,而主題文件則存放在App_Themes文件夾里。因為我們目前還沒有這個文件夾,當我們添加***個外觀文件時,Visual Studio會友善地提議為我們創建一個。點擊“是”,自動創建App_Theme文件夾并把剛剛添加的GridView.skin文件放置在那里。

讓Visual Studio自動創建App_Theme文件夾 

圖 10: 讓Visual Studio自動創建App_Theme文件夾

這將在App_Themes文件夾中自動創建一個主題,主題名稱為GridView并包含了外觀文件GridView.skin 。

主題GridView已被添加到 App_Theme 文件夾 

圖 11: 主題GridView已被添加到 App_Theme 文件夾

把主題GridView重命名為DataWebControls(從GridView文件夾右鍵菜單中選擇重命名)。然后,進入下面所見的GridView.skin文件的標記:

 

  1. < asp:GridView runat="server" CssClass="DataWebControlStyle">  
  2.  
  3.    < AlternatingRowStyle CssClass="AlternatingRowStyle" />  
  4.  
  5.    < RowStyle CssClass="RowStyle" />  
  6.  
  7.    < HeaderStyle CssClass="HeaderStyle" />     
  8.  
  9. < /asp:GridView>  
  10.  

使用了主題DataWebControls后,這將定義任何一個頁面中任何一個GridView控件與CssClass相關屬性的默認值。讓我們添加一個另一個針對DetailsView控件的外觀,這個控件我們不久就會用到。在主題DataWebControls添加一個命名為DetailsView.skin的外觀,并加入如下的標記:

  1. < asp:DetailsView runat="server" CssClass="DataWebControlStyle">  
  2.  
  3.    < AlternatingRowStyle CssClass="AlternatingRowStyle" />  
  4.  
  5.    < RowStyle CssClass="RowStyle" />  
  6.  
  7.    < FieldHeaderStyle CssClass="HeaderStyle" />  
  8.  
  9. < /asp:DetailsView>  
  10.  

關于我們的主題設置,***一部就是將主題應用到我們的asp.net頁面。一個主題可以一頁一頁地應用到頁面,也可以應用到一個站點下的所有頁面。讓我們把主題應用到站點下的所有頁面。為了實現這一點,在Web.config的< system.web>片斷里加入下面的標記:

  1. < pages styleSheetTheme="DataWebControls" /> 

這就順利完成了!在主題樣式表里預設的屬性將不會覆蓋直接在控件層面設定的屬性。如果希望主題里的設置高于控件的設置,則需要在主題樣式表里使用主題特征;然而不幸地,主題特征的設置并不出現在Visual Studio 的邏輯視圖。查閱 asp.net Themes and Skins Overview 和 Server-Side Styles Using Themes 獲取更多的關于主題和外觀的信息; 查看 How To: Apply asp.net Themes 獲得更多的關于如何配置頁面去使用一個主題的信息。

The GridView顯示 Product’s Name, Category, Supplier, Price, and Discontinued Information 

圖 12: The GridView顯示 Product’s Name, Category, Supplier, Price, and Discontinued Information

在 DetailsView控件里每次顯示一條數據

在GridView控件里,從綁定的數據源控件返回的數據每條記錄會被顯示為一行。然而有時候,我們僅僅需要顯示一條單獨的記錄,或者每次只顯示一條記錄。DetailsView控件提供了這個功能,它表現為一個兩列的HTML的< table>,每一行顯示一個字段或者一個屬性。你可以想象DetailsView是只有一條數據的GridView翻轉90度。

首先,在頁面SimpleDisplay.aspx里GridView控件的上方添加一個DetailsView控件。然后,把它綁定到GridView的同一個ObjectDataSourc控件。正如GridView控件那樣,它會根據ObjectDataSource的Select方法所返回的數據,每一個屬性生成一個綁定列。唯一不同的是,DetailsView的綁定列是水平排列的。

添加一個DetailsView 控件到頁面并綁定到ObjectDataSource 

圖 13: 添加一個DetailsView 控件到頁面并綁定到ObjectDataSource

類似GridView,DetailsView的綁定列也可以調整提供一些用戶化的展現。圖14展示了DetailsView控件在設置好綁定列和CssClass屬性后使它的外觀類似于GridView的例子。

 DetailsView 控件顯示一條記錄 

圖 14: DetailsView 控件顯示一條記錄

 

注意DetailsView控件只顯示它的數據源里的***條記錄。為了讓用戶可以瀏覽所有記錄,我們必須允許DetailsView分頁。為了實現這個,回到Visual Studio,在DetailsView的智能標記中勾選上“啟用分頁”。

允許DetailsView 控件分頁 

圖 15: 允許DetailsView 控件分頁

啟用分頁后,DetailsView控件允許用戶查看任何一個Products 

圖 16: 啟用分頁后,DetailsView控件允許用戶查看任何一個Products

以后的教程中中我們將詳細討論關于分頁。

一種更靈活的排版用作每次顯示一條記錄

使用DetailView展現ObjectDataSource返回的每一條數據顯得有些呆板。我們可能會需要更靈活的數據展現方式。例如,在每一個單獨的行里,在顯示product’s name, category, supplier, price, 和 discontinued information這些信息的基礎上,我們可能需要product name 和 price兩列顯示< h4>的列頭,而category 和 supplier則以較小的字體顯示在name和price下方。另外,我們也許不太在意屬性名(Product, Category,等等)顯示在屬性值后面。

FormView控件提供了這個層面的用戶化定制。在使用字段的基礎上(像GridView 和 DetailsView那樣),FormView控件使用模版,這可以讓我們混合使用Web服務器控件,靜態的HTML和綁定語法(databinding syntax)。如果你熟悉asp.net 1.x中的Repeater控件,你可以認為FormView是只顯示一條記錄的Repeater 。

在頁面SimpleDisplay.aspx的設計界面添加一個FormView控件。一開始FromView控件顯示為一個灰色的方塊,并告知我們需要編輯模版內容,需要使用ItemTemplate 。

 FormView必須包含一個ItemTemplate 

圖 17: FormView必須包含一個ItemTemplate

你可以通過FormView的智能標記直接給它綁定一個數據源控件,這將自動創建一個默認的ItemTemplate(如果ObjectDataSource設置了InsertMethod 和 UpdateMethod,那么同時也會自動創建EditItemTemplate 和 InsertItemTemplate)。不過,這里的示例我們將手工綁定FormView并設置其ItemTemplate 。首先,設置FormView的DataSourceID屬性為ObjectDataSource的ID: ObjectDataSource1,然后,創建ItemTemplate,在一個< h4>里顯示product’s name 和 price,category 和 supplier則以較小的字體顯示在下方。

  1. < asp:FormView ID="FormView1" runat="server" DataSourceID="ObjectDataSource1" EnableViewState="False">  
  2.  
  3.     < ItemTemplate>  
  4.  
  5.         < h4>< %# Eval("ProductName") %> (< %# Eval("UnitPrice""{0:c}") %>)< /h4>  
  6.  
  7.         Category: < %# Eval("CategoryName") %>; Supplier: < %# Eval("SupplierName") %>  
  8.  
  9.     < /ItemTemplate>  
  10.  
  11. < /asp:FormView>  
  12.  

< %# Eval(propertyName) %>是綁定語法。方法Eval返回綁定到FormView的對象的指定屬性的值。查閱Alex Homer的文章Simplified and Extended Data Binding Syntax in asp.net 2.0獲取更多的關于數據綁定的細節。

跟DetailsView一樣,FormView置顯示ObjectDataSource返回的***條記錄。你可以啟用FormView的分頁功能,從而讓訪問者可以依次查看每個產品。

【編輯推薦】

  1. ASP.NET 2.0數據教程:插入,更新和刪除數據
  2. ASP.NET 2.0數據教程:給數據訪問層添加參數化的方法
  3. ASP.NET 2.0數據教程:創建數據訪問層
  4. ASP.NET 2.0數據教程:創建一個Web項目,配置數據庫連接
  5. ASP.NET 2.0數據教程:給DataRow添加字段級驗證

     

責任編輯:book05 來源: 博客堂
相關推薦

2009-07-27 08:51:24

ObjectDataS

2009-07-28 14:06:28

ASP.NET 2.0

2009-07-22 17:21:27

ASP.NET 2.0

2009-08-05 17:43:48

ASP.NET 2.0

2009-08-05 17:26:25

ASP.NET 2.0

2009-07-24 17:15:52

SiteMapData

2009-07-27 16:09:05

GridView顯示數

2009-07-24 17:08:31

添加站點地圖asp.net

2009-07-24 12:41:21

BLL類

2009-07-24 16:37:04

創建母版頁asp.net 2.0

2009-07-27 03:21:00

breadcrumb導

2009-07-27 16:22:54

GridView選擇行

2009-07-24 13:25:43

創建數據訪問層

2009-07-27 10:12:37

GridView和Ob

2009-07-23 14:43:24

數據源控件ASP.NET 2.0

2009-07-27 09:28:55

TableAdapte

2009-07-24 14:15:51

數據訪問層

2009-07-27 09:39:04

SelectMetho

2009-08-05 17:58:53

自定義集合ASP.NET 2.0

2009-07-24 16:55:53

添加aspx頁面
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久亚洲精品视频 | 北条麻妃av一区二区三区 | 日韩欧美综合在线视频 | 欧美亚洲国语精品一区二区 | 国产九九九 | 99亚洲国产精品 | 超碰97免费在线 | 国产综合精品 | 成人免费毛片片v | 91国自视频 | 国产区精品在线观看 | 欧美亚洲一级 | 亚洲精品一区二区冲田杏梨 | 91精品国产色综合久久 | 91不卡| av男人的天堂av | 国产区在线观看 | 成人免费视频在线观看 | 精品亚洲一区二区三区 | 91精品国产综合久久久久蜜臀 | 亚洲自拍偷拍欧美 | 黄色大片视频 | 亚洲iv一区二区三区 | 国产欧美日韩一区 | 国户精品久久久久久久久久久不卡 | 一级毛片视频 | 97超碰中文网| 羞羞的视频在线观看 | 欧美6一10sex性hd | 美美女高清毛片视频免费观看 | 国产亚洲精品成人av久久ww | 99爱在线 | 亚洲视频在线免费观看 | 亚洲第一黄色网 | 成人免费一区二区 | 色就是色欧美 | 在线第一页 | 香蕉视频91 | 国产精品美女久久久久久久久久久 | 99精品免费久久久久久久久日本 | 色婷婷一区二区三区四区 |