程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET 2.0數據教程之十二:在GridView控件中使用TemplateField

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

編輯:關於ASP.NET

返回“ASP.NET 2.0數據教程目錄”

導言

GridView是由一組字段(Field)組成的,它們都指定的了來自 DataSource中的什麼屬性需要用到自己的輸出呈現中。最簡單的字段類型是 BoundField,它僅將數據簡單的顯示為文本。其他的字段類型使用交互HTML元素 (alternate HTML elements)來顯示數據。比如說,CheckBoxField將被呈現為 一個CheckBox,其選中狀態由某特定數據字段的值來決定;ImageField則將某特 定數據字段呈現為一個圖片,當然,這個數據字段中應該放的是圖片類型的數據 。超級鏈接和按鈕的狀態取決於使用HyperLinkField或ButtonField字段類型的數 據字段的值。

雖然CheckBoxField、ImageField、HyperLinkField和 ButtonField考慮到了數據的交互視圖,但它們仍然有一些相關的格式化的限制。 CheckBoxField只可以顯示為一個單個的CheckBox,而一個ImageField則只可以顯 示為一張圖片。如果某個字段要顯示一些文本、復選框、圖片還有一些其他基於 不同數據的東西的時候,我們要做什麼?或者說,如果我們需要使用除了 CheckBox、Image、HyperLink以及Button之外的Web控件來顯示數據時,我們該怎 麼辦?此外,BoundField只能顯示一個單獨的數據字段。如果我們想要在一個 GridView列中顯示兩個或者更多的數據字段的值的時候該怎麼辦呢?

為了 適應這樣的一個復雜的情況,GridView提供了使用模板來進行呈現的 TemplateField。模板可以包括靜態的HTML、Web控件以及數據綁定的代碼。此外 ,TemplateField還擁有各種可以用於不同情況的頁面呈現的模板。比如說, ItemTemplate是默認的用於呈現每行中的單元格的,而EditItemTemplate則用於 編輯數據時的自定義界面。

在本節教程中,我們將解釋如何使用 TemplateField來更加高級的自定義GridView控件。在上一節教程中,我們看到了 如何使用DataBound和RowDataBound事件處理方法來自定義基於數據的格式化。另 一個辦法就是在模板中調用一個格式化方法。在本節中,我們就會看到這種技術 。

在本節中,我們將使用一些TemplateField來自定義雇員信息的呈現。 特別的,我們將列出所有的雇員,但我們將會把雇員的姓和名字放在一列中,把 他們的雇傭日期放在一個Calendar控件中,還將用一個狀態列來表明他們來到公 司有多久了。

圖一:使用三個TemplateField來自定義信息的顯示方式

第一步 :將數據綁定到GridView

當你需要使用一些TemplateField來自定義顯示 時,我發現最簡單的就是先創建一個僅包含BoundField的GridView控件,然後添 加一些TemplateField,如果需要的話,也可以將某些BoundField直接轉換成 TemplateField。好了,讓我們開始本節教程吧。首先,通過設計器往頁面上添加 一個GridView控件,並將一個返回雇員信息的ObjectDataSource綁定到它上面。 這些步驟將創建一個帶有一些BoundField的GridView,這些BoundField對應雇員 信息中不同的字段。

打開GridViewTemplateField.aspx,並從工具箱中拖 一個GridView到設計器上。從GridView的智能標簽(smart tag)上選擇並添加一 個新的調用EmployeesBLL 類的GetEmployees()方法的ObjectDataSource控件。

圖二:添加一個新的調用GetEmployees()方法的ObjectDataSource控件

用這種方式綁定GridView將會自動的為雇員信息的每一個屬性添加一個 BoundField:EmployeeID、LastName、FirstName、Title、HireDate、ReportsTo 以及Country。在這個報表中,我們不希望看到EmployeeID、ReportsTo以及 Country屬性。要刪除這些BoundField的話,你可以:

· 使用字段對話框 - 在GridView的智能標簽的彈出菜單中點擊“編輯列 ”(Edit Columns)。然後,在左下角的列表中選中你想要刪除的 BoundField並點擊那個帶紅叉的按鈕,就可以刪除這個BoundField了。

· 手工編輯GridView的聲明語句 - 在源視圖(Source view)中,找到你想要刪除的BoundField,就是那些<asp:BoundField>元 素,刪了就行了。

在你刪了EmployeeID、ReportsTo和Country等 BoundField之後,你的GridView的標記語言代碼應該像這個樣子:

1<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="EmployeeID"
2   DataSourceID="ObjectDataSource1">
3   <Columns>
4    <asp:BoundField DataField="LastName" HeaderText="LastName" SortExpression="LastName" />
5     <asp:BoundField DataField="FirstName" HeaderText="FirstName" SortExpression="FirstName" />
6    <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
7    <asp:BoundField DataField="HireDate" HeaderText="HireDate" SortExpression="HireDate" />
8  </Columns>
9</asp:GridView>
10

讓我們花點時間在浏覽器中來看看我們的成果。這時,你將 看到一個表格,表格中每一個記錄都是一個雇員的信息,一共有四列:一個是雇 員的姓,一個是名字,一個是頭銜,還有一個是他們的受雇日期。

圖三:每一個雇員信息都顯示了LastName、FirstName、Title和HireDate

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved