模板化的数据绑定控件为我们在页面上显示数据提供了根本的灵活性。你可能还记得ASP.NET v1.x中的几个模板化控件(例如DataList和Repeater控件)。ASP.NET 2.0仍然支持这些控件,但在模板中绑定数据的语法已经被简化和改善了。本文将讨论在数据绑定控件模板中绑定数据的多种方法。

  数据绑定表达式

  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.NET 2.0中实现模板中的数据绑定相关推荐

  1. ASP.NET 2.0 中实现模板中的数据绑定系列(2)

    双向数据绑定       FormView可以通过相关的数据源控件支持自动地更新.插入和删除操作(与DetailsView类似).如果要定义编辑或插入的UI,那么除了定义数据项模板(ItemTempl ...

  2. 一起谈.NET技术,ASP.NET MVC2.0在Tab页中实现异步无刷新分页

    概述 很多地方都存在以Tab页来呈现数据的方式,比如网易.新浪.搜狐.QQ等知名的门户网站的首页,还有大家熟知的博客园首页,都是用了tab页来显示数据.大家之所以喜欢用Tab,因为它能大大的增加显示数 ...

  3. crossphp框架中,在模板中加载其他模板

    这里说我自己做的项目的应用场景 要求是用layui框架的layer组件,实现弹出层效果,用原声PHP无疑很容易做到,但是如果应用到crossphp框架流程就会非常麻烦 这里简单讲一下大致的步骤: 1. ...

  4. 走进AngularJs(二) ng模板中常用指令的使用方式

    通过使用模板,我们可以把model和controller中的数据组装起来呈现给浏览器,还可以通过数据绑定,实时更新视图,让我们的页面变成动态的.ng的模板真是让我爱不释手.学习ng道路还很漫长,从模板 ...

  5. Java导出数据到Word模板中

    Java导出数据到Word模板. 前言 网上的方案 需求介绍 模板 简介 使用体验 poi-tl Freemarker 操作步骤 总结 前言 相信很多人都会遇到Java导出的业务,Java导出主要有导 ...

  6. asp.net 4.0 新特性(翻译)

    原文地址:http://geekswithblogs.net/ranganh/archive/2009/08/14/whatrsquos-new-in-asp.net-4.0.aspx Visual ...

  7. 通过 ASP.NET 2.0 的数据增强功能来提高负载和减少代码 --作者:Dino Esposito

    [导读]在ASP.NET 2.0中引入了数据源组件,相对于1.x版本,在开发效率和运行效率上都得到了极大的提升,而本文将详细介绍新的数据控件,包括编程接口.用法和实现. 绝大多数Web应用程序都会使用 ...

  8. Inside ASP.NET 2.0 – Controls Model(转载)

    读者基础需求:了解ASP.NET 控件设计技巧參考书目:深入剖析ASP.NET 组件设计(碁峯). Developing ASP.NET Server Controls And Components( ...

  9. Asp.Net 4.0 SEO增强之UrlRouting

    asp.net 4.0 mvc 在项目中的使用. 在.Net 4.0之前我们为了做出搜索引擎友好的,对用户也友好的url都是需要自己实现Url重写,现在不需要了,.Net 4.0为我们做这一切.Url ...

最新文章

  1. 周志华《机器学习》章节整理
  2. 基于SSM选课信息管理系统
  3. pymysql模块操作数据库及连接报错解决方法
  4. python基础练习(六)
  5. 慕课网初识python_初识Python笔记
  6. python 图标字体_Icon-font图标字体的四类制作方法
  7. 您应该知道Python 3.10中的新特性!
  8. NgRx 里 first 和 take(1) 操作符的区别
  9. 3.过滤数据 ---SQL
  10. php取结果集,php获取数据库结果集方法(推荐)
  11. 重复addEventListener(事件名,的问题
  12. (转)Hibernate事务管理
  13. 前后端交互之封装Ajax+SpringMVC源码分析
  14. Python入门--字符串的判断操作
  15. Ubuntu/Linux/Unix 究竟有什么区别??
  16. “十四五”融合地表水国控断面监测数据(约3641个点位,含水质等级、水温,pH,溶解氧,电导率,浊度,高猛酸盐指数,化学需氧量,五日生化需氧量,氨氮,总磷,总氮,铜,锌,氟化物,硒,砷,汞,镉,等)
  17. 《跑步该怎么跑》读书笔记
  18. 操作系统权限提升(十二)之绕过UAC提权-Windows UAC概述
  19. 小C实例也有大梦想——自定义strlen函数
  20. pyautogui中region参数是什么意思?

热门文章

  1. 苹果电脑更改sd卡只读_SD卡变为只读系统
  2. java获取网络图片_有了这50套Java毕设项目(源码 案例),offer拿到手软,无偿分享...
  3. 【JAVA基础篇】面对对象的特征
  4. Eclipse 答疑:代码版权?如何更改 Eclipse 中注释块的 @author 版权信息?
  5. 橡胶柱压缩_你玩俄罗斯轮盘吗?剪切安全气囊压缩气瓶的隐患及注意事项
  6. ROS与Android的通信
  7. 蓝桥杯 历届试题 带分数
  8. mysql 高级知识点_这是我见过最全的《MySQL笔记》,涵盖MySQL所有高级知识点!...
  9. 在导入NVIDIA的apex库时报错 ImportError cannot import name ‘UnencryptedCookieSessionFactoryConfig‘ from
  10. java异常标记_java.lang.RuntimeException:错误:0D0680A8:asn1编码例程:ASN1_CHECK_TLEN:错误的标记...