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
>