TemplateField允許每一列定義一個完全定製的模板,可以再模板中加入控制項標記,任意的html元素以及資料繫結運算式,你可以按照你的方式布置一切
<asp:TemplateField HeaderText="Employees">
<ItemTemplate>
<%# Eval("EmployeeID") %> -
<%# Eval("TitleOfCourtesy") %> <%# Eval("FirstName") %>
<%# Eval("LastName") %>
</ItemTemplate>
<asp:TemplateField>
綁定GridView後,GridView從資料來源擷取資料並迴圈項目的集合,為每個項目處理ItemTemplate,計算其中的資料繫結運算式,並把產生的Html加到表中。
這裡運算式使用了Eval()方法,它是System.Web.UI.DataBinder類的一個靜態方法.Eval()使用方便---它自動讀取綁定到當前行的資料項目,使用反射找到匹配的欄位或屬性並獲得值。反射的過程稍微增加了一些負載,但不會給整個請求的處理增加很長時間。如果不用Eval()方法,可以使用Container.DataItem屬性訪問資料對像,像下面那樣:
<%# ((EmployeeDetails)Container.DataItem)["FirstName"] %>
Eval()方法加入了一個格式化欄位的功能,<%# Eval("BirthDate","{0:MM/dd/yy}") %>
你還可以自由地組合模板列和其他類型的列 <asp:TemplateField HeaderText="Employees">
<ItemTemplate>
<b>
<%# Eval("EmployeeID") %> -
<%# Eval("TitleOfCourtesy") %> <%# Eval("FirstName") %>
<%# Eval("LastName") %>
</b>
<hr />
<small><i>
<%# Eval("Address") %><br />
<%# Eval("City") %>, <%# Eval("Country") %>,
<%# Eval("PostalCode") %><br />
<%# Eval("HomePhone") %></i>
<br /><br />
<%# Eval("Notes") %>
</small>
</ItemTemplate>
</asp:TemplateField>