`

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

 
阅读更多
<iframe align="top" marginwidth="0" marginheight="0" src="http://www.zealware.com/46860.html" frameborder="0" width="468" scrolling="no" height="60"></iframe>
双向数据绑定

  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>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" TypeName="DataComponentTableAdapters.PhotosTableAdapter" SelectMethod="GetPhoto" UpdateMethod="UpdateCaption" OldValuesParameterFormatString="original_{0}">
 <UpdateParameters>
  <asp:Parameter Name="Caption" />
  <asp:Parameter Name="Original_PhotoID" />
 </UpdateParameters>
<SelectParameters>
<asp:QueryStringParameter Name="PhotoID" DefaultValue="9" 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操作。下面的例子演示了这种技术。



……
<asp:GridView ID="GridView1" runat="server" DataSourceID="ObjectDataSource1" AutoGenerateColumns="False" AllowPaging="True" AllowSorting="True" DataKeyNames="AlbumID">
 <Columns>
  <asp:CommandField ShowEditButton="True" />
  <asp:BoundField ReadOnly="True" HeaderText="AlbumID" DataField="AlbumID" SortExpression="AlbumID" />
  <asp:TemplateField HeaderText="AlbumName" SortExpression="AlbumName" ItemStyle-Wrap="false">
   <ItemTemplate>
    <asp:Label ID="Label1" runat="server" Text='<%# Eval("AlbumName") %>'></asp:Label>
   </ItemTemplate>
   <EditItemTemplate>
    <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("AlbumName") %>'></asp:TextBox>
    <asp:RequiredFieldValidator ControlToValidate="TextBox1" ErrorMessage="AlbumName cannot be empty" ID="RequiredFieldValidator1" Display="Dynamic" runat="server">*</asp:RequiredFieldValidator>
   </EditItemTemplate>
  </asp:TemplateField>
  ……
  </asp:GridView><br />
  <asp:ValidationSummary ID="ValidationSummary1" runat="server" />
  <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" ConvertNullToDBNull="true"
TypeName="DataComponentTableAdapters.AlbumsTableAdapter" SelectMethod="GetAlbumsByOwner" UpdateMethod="Update" OldValuesParameterFormatString="original_{0}">
  ……
</asp:ObjectDataSource>

  TemplateField的另外一种用途是定制给GridView或DetailsView列/字段输入值的控件。例如,你可以在TemplateField的EditItemTemplate中放置一个DropDownList,允许用户从预定义的值列表中选择。下面的例子演示了这种技术。请注意,示例中的下拉列表绑定到了自己的数据源控件,以动态地获取列表值。

<asp:TemplateField HeaderText="Owner" SortExpression="Owner">
 <ItemTemplate>
  <asp:Label ID="Label2" runat="server" Text='<%# Eval("Owner") %>'></asp:Label>
 </ItemTemplate>
 <EditItemTemplate>
  <asp:DropDownList DataSourceID="ObjectDataSource2" DataTextField="Owner" DataValueField="Owner" ID="DropDownList2" runat="server" SelectedValue='<%# Bind("Owner") %>'>
  </asp:DropDownList>
 </EditItemTemplate>
 <ItemStyle Wrap="False" />
</asp:TemplateField>

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1607338


分享到:
评论

相关推荐

    ASP.NET 2.0技术内幕

    《ASP.NET 2.0技术内幕》采用自顶向下的方式介绍ASP.NET 2.0的最新编程实践,从更广泛的特征到具体的实现和编程细节,充分展示了ASP.NET的最新编程实践。全书共15章,主题涉及HTTP运行库、安全性、缓存、状态...

    ASP.NET 2.0+SQL Server 2005全程指南-源代码

    ASP.NET 2.0+SQL Server 2005全程指南 目录 基础篇 第1章 ASP.NET概述及环境配置 1.1 认识ASRNET 1.1.1 .NET Framework框架 1.1.2 ASP.NET功能与特性 1.1.3 ASP.NET与ASP的区别 1.2 搭建ASP.NET开发环境 1.2.1...

    零基础学ASP.NET 2.0电子书&源代码绝对完整版1

    示例描述:本章演示ASP.NET 2.0网站的预编译以及学习ASP.NET 2.0的前置知识。 WebSite文件夹 创建的ASP.NET 2.0 Web站点。 www文件夹 第一个用C#开发的Web应用程序。 bianyi.bat 编译网站的批处理文件。 ...

    2.ASP.NET.2.0.高级编程(第4版) [1/7]

    第11章 ASP.NET 2.0中的数据绑定 307 11.1 数据源控件 307 11.1.1 SqlDataSource控件 310 11.1.2 XmlDataSource控件 316 11.1.3 ObjectDataSource控件 316 11.1.4 SiteMapDataSource控件 320 11.2 配置数据源...

    《零基础学ASP.NET 2.0》第15章 数据绑定控件显示数据

    15.4.2 进行数据的模板化显示 282 15.5 常见问题 284 15.5.1 DataList控件的使用是否频繁 284 15.5.2 在使用GridView控件的过程中要注意什么 284 15.5.3 如何在用GridView控件浏览数据时插入新数据 284

    ASP.NET2.0高级编程(第4版)1/6

    本书全面介绍了ASP.NET各种编程技能和2.0版中的巨大变化,并详细阐述了2.0版中的每个新特性。书中提供了大量的实例,可帮助读者快速掌握如何在.NET平台下开发功能强大的ASP.NET应用程序。本书适合有一些基础的ASP...

    道不远人 深入解析ASP.NET 2.0控件开发

    全书用通俗易懂、平易近人的语言,讲述ASP.NET技术中最关键的部分――ASP.NET控件与组件的开发细节,从对ASP.NET编程模型的引入到ASP.NET控件最基本的知识,包括呈现内容,属性与持久化,服务端事件与ASP.NET回传,...

    零基础学ASP.NET 2.0&源代码绝对完整版1

    示例描述:本章演示ASP.NET 2.0网站的预编译以及学习ASP.NET 2.0的前置知识。 WebSite文件夹 创建的ASP.NET 2.0 Web站点。 www文件夹 第一个用C#开发的Web应用程序。 bianyi.bat 编译网站的批处理文件。 form...

    ASP.NET.2.0技术内幕.part2

    《ASP.NET 2.0技术内幕》采用自顶向下的方式介绍ASP.NET 2.0的最新编程实践,从更广泛的特征到具体的实现和编程细节,充分展示了ASP.NET的最新编程实践。全书共15章,主题涉及HTTP运行库、安全性、缓存、状态管理、...

    ASP.NET.2.0技术内幕.part3

    《ASP.NET 2.0技术内幕》采用自顶向下的方式介绍ASP.NET 2.0的最新编程实践,从更广泛的特征到具体的实现和编程细节,充分展示了ASP.NET的最新编程实践。全书共15章,主题涉及HTTP运行库、安全性、缓存、状态管理、...

    ASP.NET完全入门

    ASP.NET 2.0改善了模板中的数据绑定操作,把v1.x中的数据绑定语法DataBinder.Eval(Container.DataItem, fieldname)简化为Eval(fieldname)。Eval方法与DataBinder.Eval一样可以接受一个可选的格式化字符串参数。缩短...

    ASP.NET.2.0技术内幕.part1

    《ASP.NET 2.0技术内幕》采用自顶向下的方式介绍ASP.NET 2.0的最新编程实践,从更广泛的特征到具体的实现和编程细节,充分展示了ASP.NET的最新编程实践。全书共15章,主题涉及HTTP运行库、安全性、缓存、状态管理、...

    ASP.NET2.0网络编程自学手册源代码(留言板)

    人民邮电出版社的ASP.NET2.0网络编程自学手册第17章留言板的源代码,学习如何配置Web.config、学习如何使用VisualStudio2005中的模板、掌握SqlData类、掌握FreeTextBox组件、掌握DataList绑定技术、掌握DataReader...

    asp.net知识库

    ASP.NET2.0 ObjectDataSource的使用详解(2) TextDataSource(1) — DataSourceControl内幕 TextDataSource(2) — 翠花,上“数据” ASP.NET2.0 ObjectDataSource的使用详解(3) ASP.NET2.0 快速入门 ----默认...

    IntelliGrid表格控件(Web Grid)V1.0 For Asp.Net2.0 3.5

    本控件是基于Asp.Net平台的Web表格控件,用于Web网站的开发。 ★支持多种浏览器(IE6以上、FireFox2.0以上、谷歌浏览器等)。 ★使用本控件开发的网站,网页上表格行的插入、追加、删除、修改、上下移动、拷贝、粘贴...

    [ASP.NET.AJAX编程参考手册(涵盖ASP.NET.3.5及2.0)].(美)霍斯拉维.扫描版.pdf

    书中的所有代码都通过了ASP.NET 2.0和ASP.NET 3.5的测试。通过本书,您将学习到这些框架之间是如何进行协同以满足AJAx应用需求的。本书将为您提供开发ASP.NET AJAX应用所必需的技能和知识。 内容简介 本书以AJAX为...

    在ASP.NET 2.0中操作数据之十九:给编辑和新增界面增加验证控件

    本文主要介绍如何对GridView和DetailsView的新增、编辑功能进行完善,将原来自动生成的绑定列转换为模板列,进而增加验证控件,有助于更多了解ASP.NET 2.0中新的特性。

    asp.net教学讲义

    3.4 ASP.NET2.0新增控件 45 3.4.1 ImageMap控件 45 3.4.2 FileUpload控件 48 3.5 客户端处理 52 3.5.1 第一种方式示例: 52 3.5.2第二种方式:动态注册javascript指令块 53 3.6验证控件 54 3.6.1验证控件简介 54 ...

    asp.net程序设计使用教程课件ppt

    10.1 ASP.NET2.0安全配置 10.2 身份验证 10.3 成员资格管理 10.4 角色管理 10.5 安全控件 10.6 案例:角色、用户、权限管理 11.1 三层架构设计 11.2 三层架构设计 12.1 Web部件 12.2 Web部件 13.1 XML访问技术1 13.2...

    ASP.NET3.5从入门到精通

    16.1.3 ASP.NET 2.0 AJAX 16.1.4 ASP.NET 3.5 AJAX 第一篇窗口与界面编程 19 16.1.5 AJAX 简单示例 16.2 ASP.NET 3.5AJAX 控件 16.2.1 脚本管理控件(ScriptManger) 16.2.2 脚本管理控件(ScriptMangerProxy) ...

Global site tag (gtag.js) - Google Analytics