知识大全 ASP.NET 2.0中实现模板中的数据绑定
Posted 知
篇首语:对于攀登者来说,失掉往昔的足迹并不可惜,迷失了继续前时的危险。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET 2.0中实现模板中的数据绑定相关的知识,希望对你有一定的参考价值。
ASP.NET 2.0中实现模板中的数据绑定 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
模板化的数据绑定控件为我们在页面上显示数据提供了根本的灵活性 你可能还记得ASP NET v x中的几个模板化控件(例如DataList和Repeater控件) ASP NET 仍然支持这些控件 但在模板中绑定数据的语法已经被简化和改善了 本文将讨论在数据绑定控件模板中绑定数据的多种方法 数据绑定表达式 ASP NET 改善了模板中的数据绑定操作 把v x中的数据绑定语法DataBinder Eval(Container DataItem fieldname)简化为Eval(fieldname) Eval方法与DataBinder Eval一样可以接受一个可选的格式化字符串参数 缩短的Eval语法与DataBinder Eval的不同点在于 Eval会根据最近的容器对象(例如DataListItem)的DataItem属性来自动地解析字段 而DataBinder Eval需要使用参数来指定容器 由于这个原因 Eval只能在数据绑定控件的模板中使用 而不能用于Page(页面)层 当然 ASP NET 页面中仍然支持DataBinder Eval 你可以在不支持简化的Eval语法的环境中使用它 下面的例子演示了如何使用新的简化的Eval数据绑定语法绑定到DataList数据项模板(ItemTemplate)中的Image Label和HyperLink控件 <asp:DataList ID= DataList RepeatColumns= Width= runat= server DataSourceID= ObjectDataSource > <ItemTemplate> <asp:HyperLink ID= HyperLink runat= server NavigateUrl= <%# Eval( PhotoID PhotoFormViewPlain aspx?ID= ) %> > <asp:Image ID= Image Runat= server ImageUrl= <%# Eval( FileName images/thumbs/ ) %> /></asp:HyperLink> <asp:Label ID= CaptionLabel runat= server Text= <%# Eval( Caption ) %> /> </ItemTemplate></asp:DataList><br /><asp:ObjectDataSource ID= ObjectDataSource runat= server TypeName= DataComponentTableAdapters PhotosTableAdapter SelectMethod= GetPhotosForAlbum > 数据绑定也可以作为控件的主题定义(theme definition)的一部分 这样我们就可以通过改变主题来随意地改变模板化控件的布局和外观 但是Theme(主题)模板中只能使用Eval(或者后面讨论的Bind) 绑定到任意的用户代码是被禁止的 FormView控件 DataList控件在来自数据源的数据项中进行迭代操作 并为每个数据项输出ItemTemplate(数据项模板) 这对于显示数据项列表是有用的 但是通常情况下 你希望在一个窗体中实现单条数据项的绑定操作 为了实现这个目的 ASP NET 引入了FormView控件 它能够在任意的模板中每次显示一个数据项 DetailsView和FormView之间的主要差异在于 DetailsView拥有内建的表格显示方式 而FormView需要使用用户自定义的显示模板 在其它方面FormView和DetailsView对象模型是非常相似的 下面的例子显示了一个绑定到ObjectDataSource的FormView控件 该FormView的ItemTemplate属性包含数据绑定的Image Label和HyperLink控件 与前面的DataList示例类似 <asp:FormView ID= FormView runat= server DataSourceID= ObjectDataSource > <ItemTemplate> <asp:Label ID= CaptionLabel runat= server Text= <%# Eval( Caption ) %> Font Size= pt /><br /> <asp:Image ID= Image runat= server ImageUrl= <%# Eval( FileName images/ ) %> /> <asp:HyperLink ID= HyperLink Text= Back to Album NavigateUrl= <%# Eval( AlbumID PhotosDataList aspx?ID= ) %> runat= server /> </ItemTemplate></asp:FormView><asp:ObjectDataSource ID= ObjectDataSource runat= server TypeName= DataComponentTableAdapters PhotosTableAdapter SelectMethod= GetPhoto > <SelectParameters><asp:QueryStringParameter Name= PhotoID DefaultValue= QueryStringField= ID /></SelectParameters></asp:ObjectDataSource> FormView与DetailsView类似 也跟踪当前显示的数据项 但是当数据源返回列表的时候 我们也可以选择支持多个数据项的分页操作 下面的例子显示了一个带有分页功能的FormView
<asp:FormView ID= FormView Runat= server DataSourceID= SqlDataSource HeaderText= Books for Author AllowPaging= True > <ItemTemplate> <asp:Image ID= Image ImageUrl= <%# Eval( title_id ~/Images/ gif ) %> Runat= server /> <asp:Label ID= Label Font Size= em Font Bold= true Text= <%# Eval( title ) %> runat= server /> <asp:Label ID= Label Text= <%# Eval( price :c ) %> runat= server /> </ItemTemplate></asp:FormView><asp:SqlDataSource ID= SqlDataSource 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= 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= FormView runat= server DataSourceID= ObjectDataSource DataKeyNames= PhotoID ><EditItemTemplate> <b>Enter a New Caption:</b> <asp:TextBox Text= <%# Bind( Caption ) %> runat= server ID= CaptionTextBox /> <asp:Button ID= Button runat= server Text= Update CommandName= Update /> <asp:Button ID= Button runat= server Text= Cancel CommandName= Cancel /></EditItemTemplate><ItemTemplate> <asp:Label ID= CaptionLabel runat= server Text= <%# Eval( Caption ) %> Font Size= pt /><br /> <asp:Image ID= Image runat= server ImageUrl= <%# Eval( FileName images/ ) %> /> <br /> <asp:Button ID= Button runat= server Text= Edit Caption CommandName= Edit /> <asp:HyperLink ID= HyperLink Text= Back to Album NavigateUrl= <%# Eval( AlbumID PhotosDataList aspx?ID= ) %> runat= server /></ItemTemplate></asp:FormView><asp:ObjectDataSource ID= ObjectDataSource runat= server TypeName= DataComponentTableAdapters PhotosTableAdapter SelectMethod= GetPhoto UpdateMethod= UpdateCaption OldValuesParameterFormatString= original_ > <UpdateParameters> <asp:Parameter Name= Caption /> <asp:Parameter Name= Original_PhotoID /> </UpdateParameters><SelectParameters><asp:QueryStringParameter Name= PhotoID DefaultValue= QueryStringField= ID /></SelectParameters></asp:ObjectDataSource> GridView和DetailsView还支持模板化UI 它是通过给Columns或Fields集合增加TemplateField来实现的 TemplateField支持使用ItemTemplate EditItemTemplate和InsertItemTemplate(DetailsView才有)为控件的不同显示模式中的字段指定UI 与上面的FormView示例类似 EditItemTemplate或InsertItemTemplate中的双向数据绑定也允许GridView或DetailsView从这些模板的控件中提取值 TemplateField最常见的用途是给EditItemTemplate增加验证器控件 用于公开地验证GridView或DetailsView操作 下面的例子演示了这种技术
cha138/Article/program/ASP/201311/21726相关参考
ASP.Net2.0中的5个数据控件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!第一篇的入门帖就
ASP.NET2.0中的数据源控件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ASPNET引
ASP.NET2.0移动开发之属性重写和模板化 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 本
在ASP.NET2.0中保护机密数据 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在配置系统中
ASP.NET2.0中XML数据的处理 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! SqlDa
ASP.NET数据绑定—多样的绑定方式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在这个系列
深入ASP.NET数据绑定(上) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在ASPNET我
ASP.NET之数据绑定2 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &
ASP.NET数据绑定控件比较浅析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ASPNET数
这篇文章介绍了aspnet数据绑定的实例代码有需要的朋友可以参考一下 复制代码代码如下:cha138/Article/program/net/201311/14140