zoukankan
html css js c++ java
ASP.NET 2.0中实现模板中的数据绑定
模板化的数据绑定控件为我们在页面上显示数据提供了根本的灵活性。你可能还记得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>
查看全文
相关阅读:
vue中dom元素和组件的获取
Vue.js中父子组件之间的传值和传方法
IDEA中的快捷键
springmvc中使用controller时,跳转视图会带上外层的地址
通配符的匹配很全面, 但无法找到元素 'mvc:annotation-driven' 的声明
vue中的组件
vuejs
成员变量(实例变量)&局部变量&静态变量(类变量)的区别
代码块
重载&重写
原文地址:https://www.cnblogs.com/RuiLei/p/765249.html
最新文章
如何理解活到老学到老
国外著名作家年代表
谈谈我眼中的可视化技术
如何写好技术文章
关于阅读的元思考
google.cn site about technology
关于RFC文档的一些研究体会
从排查ip不合法,到发现自己拖延,自欺的问题
From Small Not Perfect
工程化方向
热门文章
What is Good Code
php链式调用
php 读取文件,批量构造sql语句写入数据库
做时间的朋友
科学做Leetcode,拒绝思维懒惰
写Leetcode 对业务代码是帮助的
逻辑自恰,成为一个体系化思考和解决问题的工程师而不是面向搜索引擎的代码搬运工
hystrix熔断机制
eureka服务注册中心
关于找不到jdbcproperties文件
Copyright © 2011-2022 走看看