ASP.NET 2.0 中实现模板中的数据绑定 1
点击次数:19 次 发布日期:2008-11-26 11:09:12 作者:源代码网
|
源代码网推荐 源代码网推荐 数据绑定表达式 源代码网推荐 源代码网推荐 ASP.NET 2.0改善了模板中的数据绑定操作,把v1.x中的数据绑定语法DataBinder.Eval(Container.DataItem, fieldname)简化为Eval(fieldname)。Eval方法与DataBinder.Eval一样可以接受一个可选的格式化字符串参数。缩短的Eval语法与DataBinder.Eval的不同点在于,Eval会根据最近的容器对象(例如DataListItem)的DataItem属性来自动地解析字段,而DataBinder.Eval需要使用参数来指定容器。由于这个原因,Eval只能在数据绑定控件的模板中使用,而不能用于Page(页面)层。当然,ASP.NET 2.0页面中仍然支持DataBinder.Eval,你可以在不支持简化的Eval语法的环境中使用它。 源代码网推荐 源代码网推荐 下面的例子演示了如何使用新的简化的Eval数据绑定语法绑定到DataList数据项模板(ItemTemplate)中的Image、Label和HyPerlink控件。 源代码网推荐 源代码网推荐 <asp:DataList ID="DataList1" RepeatColumns="5" Width="600" runat="server" DataSourceID="ObjectDataSource1"> 源代码网推荐 <ItemTemplate> 源代码网推荐 <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="<%# Eval("PhotoID", "PhotoFormViewPlain.aspx?ID={0}") %>"> 源代码网推荐 <asp:Image ID="Image1" Runat="server" ImageUrl="<%# Eval("FileName", "images/thumbs/{0}") %>" /></asp:HyperLink> 源代码网推荐 <asp:Label ID="CaptionLabel" runat="server" Text="<%# Eval("Caption") %>" /> 源代码网推荐 </ItemTemplate> 源代码网推荐 </asp:DataList><br /> 源代码网推荐 <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" TypeName="DataComponentTableAdapters.PhotosTableAdapter" SelectMethod="GetPhotosForAlbum"> 源代码网推荐 源代码网推荐 数据绑定也可以作为控件的主题定义(theme definition)的一部分,这样我们就可以通过改变主题来随意地改变模板化控件的布局和外观。但是Theme(主题)模板中只能使用Eval(或者后面讨论的Bind)。绑定到任意的用户代码是被禁止的。 源代码网推荐 源代码网推荐 FormView控件 源代码网推荐 源代码网推荐 DataList控件在来自数据源的数据项中进行迭代操作,并为每个数据项输出ItemTemplate(数据项模板)。这对于显示数据项列表是有用的,但是通常情况下,你希望在一个窗体中实现单条数据项的绑定操作。为了实现这个目的,ASP.NET 2.0引入了FormView控件,它能够在任意的模板中每次显示一个数据项。DetailsView和FormView之间的主要差异在于,DetailsView拥有内建的表格显示方式,而FormView需要使用用户自定义的显示模板。在其它方面FormView和DetailsView对象模型是非常相似的。下面的例子显示了一个绑定到ObjectDataSource的FormView控件。该FormView的ItemTemplate属性包含数据绑定的Image、Label和HyperLink控件,与前面的DataList示例类似。 源代码网推荐 源代码网推荐 <asp:FormView ID="FormView1" runat="server" DataSourceID="ObjectDataSource1"> 源代码网推荐 <ItemTemplate> 源代码网推荐 <asp:Label ID="CaptionLabel" runat="server" Text="<%# Eval("Caption") %>" Font-Size="32pt" /><br /> 源代码网推荐 <asp:Image ID="Image1" runat="server" ImageUrl="<%# Eval("FileName", "images/{0}") %>" /> 源代码网推荐 <asp:HyperLink ID="HyperLink1" Text="Back to Album" NavigateUrl="<%# Eval("AlbumID", "PhotosDataList.aspx?ID={0}") %>" runat="server" /> 源代码网推荐 </ItemTemplate> 源代码网推荐 </asp:FormView> 源代码网推荐 <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" TypeName="DataComponentTableAdapters.PhotosTableAdapter" SelectMethod="GetPhoto"> 源代码网推荐 <SelectParameters> 源代码网推荐 <asp:QueryStringParameter Name="PhotoID" DefaultValue="9" QueryStringField="ID" /> 源代码网推荐 </SelectParameters> 源代码网推荐 </asp:ObjectDataSource> 源代码网推荐 源代码网推荐 FormView与DetailsView类似,也跟踪当前显示的数据项,但是当数据源返回列表的时候,我们也可以选择支持多个数据项的分页操作。下面的例子显示了一个带有分页功能的FormView。 源代码网推荐 源代码网推荐 <asp:FormView ID="FormView1" Runat="server" DataSourceID="SqlDataSource1" 源代码网推荐 HeaderText="Books for Author" AllowPaging="True"> 源代码网推荐 <ItemTemplate> 源代码网推荐 <asp:Image ID="Image1" ImageUrl="<%# Eval("title_id","~/Images/{0}.gif") %>" Runat="server" /> 源代码网推荐 <asp:Label ID="Label1" Font-Size="1.2em" Font-Bold="true" Text="<%# Eval("title") %>" runat="server" /> 源代码网推荐 <asp:Label ID="Label2" Text="<%# Eval("price","{0:c}") %>" runat="server" /> 源代码网推荐 </ItemTemplate> 源代码网推荐 </asp:FormView> 源代码网推荐 <asp:SqlDataSource ID="SqlDataSource1" Runat="server" SelectCommand="SELECT dbo.authors.au_id, dbo.titles.title_id, dbo.titles.title, dbo.titles.type, dbo.titles.price, dbo.titles.notes FROM dbo.authors INNER JOIN dbo.titleauthor ON dbo.authors.au_id = dbo.titleauthor.au_id INNER JOIN dbo.titles ON dbo.titleauthor.title_id = dbo.titles.title_id WHERE (dbo.authors.au_id = @au_id)" 源代码网推荐 ConnectionString="<%$ ConnectionStrings:Pubs %>"> 源代码网推荐 <SelectParameters> 源代码网推荐 <asp:QueryStringParameter Name="au_id" DefaultValue="213-46-8915" QueryStringField="ID" /> 源代码网推荐 </SelectParameters> 源代码网推荐 </asp:SqlDataSource> 源代码网推荐 源代码网推荐 源代码网推荐 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 源代码网推荐 源代码网供稿. |
