成都网站建设
|
域名注册
|
虚拟主机
|
网站制作
|
网站案例
|
网站优化
|
网站推广
|
企业邮局
|
服务器租用
|
广告设计
首页
服务器租用
企业邮箱
虚拟主机
网站程序
营销推广
网站建设
域名注册
前端开发
网站备案
网站策划
|
网站建设
|
网站案例
|
虚拟主机
|
网站推广
|
云服务器
|
成都网站制作公司
|
php空间
|
独立IP空间
|
jsp虚拟主机
网站程序
java教程
asp程序
asp.net程序
vb编程
php程序
C#程序
服务器租用
web服务器
FTP服务器
服务器托管
服务器租用
vps主机服务器
企业邮箱
企业邮箱优势
企业邮箱设置
邮箱收发问题
邮箱功能讲解
邮箱其他问题
虚拟主机
主机购买
数据库
主机管理
FTP上传
主机续费升级
营销推广
seo优化
网站推广
搜索引擎
免费资源
网站建设
网站方案
网站改版
网页设计
网站维护
网站策划
域名注册
域名转入\转出
英文域名
通用网址
中文域名
域名解析
前端开发
html
jQuery
JavaScript教程
css
div+css
网站备案
备案流程指南
备案资料下载
备案常见问题
各省备案要求
移动互联网
wap手机网站
app应用开发
微网站
当前位置:
创新互联
>>
常见问题
>>
网站程序
>>
asp.net程序
>>
ASP.NET 2.0中实现模板中的数据绑定
ASP.NET 2.0中实现模板中的数据绑定
作者:创新互联 文章来源:网站程序部 点击数:
更新时间:2012-01-10
模板化的
数据绑定
控件为我们在
网站设计
页面上显示数据提供了根本的灵活性。你可能还记得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: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>
双向数据绑定
FormView可以通过相关的数据源控件支持自动地更新、插入和删除操作(与DetailsView类似)。如果要定义编辑或插入的UI,那么除了定义数据项模板(ItemTemplate)之外,你还要定义EditItemTemplate或InsertItemTemplate模板。在这个模板中,你可以把输入控件(例如文本框、检查框或下拉列表)绑定到数据源的字段。这些模板中的数据绑定使用了"双向"数据绑定语法,允许FormView从模板的输入控件中提取值并传递给数据源。这些数据绑定操作用新的Bind(fieldname)语法代替了Eval。
请注意:使用Bind语法的数据绑定控件必须设置好ID属性。
GridView或DetailsView执行更新或插入操作的时候(这些控件的Columns或Fields都会定义BoundFields,绑定字段),GridView或 DetailsView负责建立编辑或插入模式中的输入UI,因此它能够自动地提取这些值并把它们传递给数据源。由于模板包含了任意的用户自定义UI控件,双向数据绑定语法就是必要的,以确保模板化控件(例如FormView)在应对更新、插入或删除操作的时候,知道应该从模板中提取那些控件的值。你仍然可以在EditItemTemplate中使用Eval语句进行数据绑定,来给数据源传递值。请注意,FormView与DetailsView和GridView一样支持DataKeyNames属性,它保存了传递给更新/删除操作的主键字典的原始值,即使这些值没有显示出来。
FormView支持DefaultMode属性,它可以指定默认显示的模板,但在默认情况下FormView处于只读模式并显示ItemTemplate模板。为了把UI从只读模式转换为编辑或插入模式,你可以给模板添加一个按钮控件,把该按钮的CommandName属性设置为Edit或New。在EditItemTemplate模板中,你可以增加按钮,把CommandName设置为Update或Cancel以提交或终止更新操作。类似的,你可以增加按钮,把CommandName设置为Insert或Cancel来提交或终止插入操作。
下面的例子演示了定义了ItemTemplate和EditItemTemplate模板的FormView。其中的ItemTemplate模板包含了使用Eval(双向)绑定的控件,而EditItemTemplate模板则包含了使用Bind语句进行双向绑定的文本框控件。主键字段(PhotoID)是使用DataKeyNames属性存放在viewstate中的。该FormView包含了用于在模板之间进行切换的按钮。
<asp:FormView ID="FormView1" runat="server" DataSourceID="ObjectDataSource1" DataKeyNames="PhotoID">
<EditItemTemplate>
<b>Enter a New Caption:</b>
<asp:TextBox Text=''<%# Bind("Caption") %>'' runat="server" ID="CaptionTextBox" /> <asp:Button ID="Button1" runat="server" Text="Update" CommandName="Update" />
<asp:Button ID="Button2" runat="server" Text="Cancel" CommandName="Cancel" />
</EditItemTemplate>
<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}") %>'' /> <br />
<asp:Button ID="Button3" runat="server" Text="Edit Caption..." CommandName="Edit" /> <asp:HyperLink ID="HyperLink1" Text="Back to Album" NavigateUrl=''<%# Eval("AlbumID", "PhotosDataList.aspx?ID={0}") %>'' runat="server" />
</ItemTemplate>
</asp:FormView
从.NET类库代码来看ASP.NET运行时之一
:上一篇
ASP.net中前端开发技巧
:下一篇
asp.net程序相关文章
从.NET类库代码来看ASP.N...
ASP.NET3.5的ListV...
ASP.NET中基类页的设计和使...
asp.net与asp的功能上的...
ASP站点如何设置防盗链
ASP.NET 2.0 中的数据...
关于ASP.NET调用JavaS...
用.net 处理xmlHttp发...
专注网站建设、网页设计、网站制作、企业网站建设——创新互联
移动互联网
|
网站备案
|
前端开发
|
域名注册
|
网站建设
|
营销推广
|
网站程序
|
虚拟主机
|
企业邮箱
|
服务器租用
|
热门搜索
服务电话:028-86922220 13518219792 公司地址:成都市太升南路288号锦天国际A幢10楼2号
企业邮箱:
service@cdxwcx.com
版权所有:成都创新互联科技有限公司 蜀ICP备09010846号
成都网站建设