模板和数据绑定表达式
几乎所有的数据绑定控件都支持模板(template)。
在显示数据时,可以用模板来格式化每个数据项的布局和外观。
通过模板,可以使用数据绑定表达式来显示数据项的值。
使用模板
(除TreeView外)2.0中的数据绑定控件都支持模板。
Repeater、DataList、FormView必须使用模板显示数据。
GridView、DetailsView、Menu等支持模板,但不是必须使用。
模板中可以包含
- HTML
- 数据绑定表达式
- 其他控件
示例:超链接列表
<%@ Page Language="VB" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>显示链接</title> </head> <body> <form id="form1" runat="server"> <div> <asp:Repeater ID="Repeater1" runat="server" DataSourceID="srcMovies"> <ItemTemplate> <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%#eval("id","details.aspx?id={0}") %>'> <%#Eval("title") %> </asp:HyperLink> <br/> </ItemTemplate> </asp:Repeater> <asp:SqlDataSource ID="srcMovies" ConnectionString="data source=.\sqlexpress;integrated security=true;user instance=true;attachdbfilename=|datadirectory|mydatabase.mdf" SelectCommand="select id,title from movies" runat="server" /> </div> </form> </body> </html>
<%@ Page Language="VB" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:GridView ID="gv1" DataSourceID="srcMovies" runat="server"> </asp:GridView> <asp:SqlDataSource ID="srcMovies" ConnectionString="data source=.\sqlexpress;integrated security=true;user instance=true;attachdbfilename=|datadirectory|mydatabase.mdf" SelectCommand="select title,director from movies where id=@mid" runat="server" > <SelectParameters> <asp:QueryStringParameter Name="mid" Type="Int32" QueryStringField="id" /> </SelectParameters> </asp:SqlDataSource> </div> </form> </body> </html>
使用数据绑定表达式
数据绑定表达式,直到运行时才计算出结果。
(在页面中使用)只要将表达式包含在<%# %>符号中。
数据绑定表达式在控件的DataBinding事件触发时才开始计算值。
对于【声明式数据绑定】这个事件是自动触发的。
对于【编程式数据绑定】事件在调用DataBind方法时触发。