• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > 在ASP.NET 2.0中操作数据之十四:使用FormView 的模板

在ASP.NET 2.0中操作数据之十四:使用FormView 的模板

作者:heker2007 字体:[增加 减小] 来源:互联网 时间:2017-05-11

heker2007通过本文主要向大家介绍了formview,formview控件用法,formview控件,mfc formview,idd formview等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

导言

  在上两节教程中,我们看到了如何使用TemplateField来自定义GridView和DetailsView的输入。TemplateField使我们可以高度自主的定义某个特定的列,但不管是GridView还是DetailsView,都会有点太规则了,简单的说就是它们都有着四四方方的格子一样的外观。很多情况下这样的格子一样的外观是很不错的,不过有的时候我们却需要使用一个不规则的显示外观。当需要显示一个单独的记录时,使用FormView控件就可以实现这种比较随意的外观呈现。

  跟DetailsView不同,FormView并不是由那些杂七杂八的列所组成的。你不能给一个FormView添加BoundField或是TemplateField,不过FormView是使用模板来呈现的。我们可以这样来理解FormView,把它当作只含有一个TemplateField的DetailsView控件。FormView支持以下这些模板:

· ItemTemplate – 用于在FormView种呈现一个特殊的记录

· HeaderTemplate – 用于指定一个可选的页眉行

· FooterTemplate –用于指定一个可选的页脚行

· EmptyDataTemplate – 当FormView的DataSource缺少记录的时候,EmptyDataTemplate将会代替

ItemTemplate来生成控件的标记语言

· PagerTemplate – 如果FormView启用了分页的话,这个模板可以用于自定义分页的界面

· EditItemTemplate / InsertItemTemplate – 如果FormView支持编辑或插入功能,那么这两种模板可以用于自定义相关的界面

  在本节教程中,我们将解释如何使用FormView控件来为产品呈现一个不规则的外观。FormView的ItemTemplate将会使用一个页眉元素和<table>的结合体来显示名称、分类、供应商等等的值,而不是使用各种各样的列(如图一所示)。

http://files.weikejianghu.com/file_images/article/201605/2016050616543974.png

图一:FormView打破了DetailsView的那种格子一样外观

第一步:将数据绑定到FormView

 打开FormView.aspx页面,并从工具箱中拖一个FormView到设计器中。FormView刚刚添加到页面上时,它就是一个灰色的方块,这就告诉我们它需要一个ItemTemplate。

http://files.weikejianghu.com/file_images/article/201605/2016050616543975.png

图二:FormView在添加一个ItemTemplate之前是不会在设计器中呈现出来的

  可以手工编写代码(在源视图中)来添加ItemTemplate,也可以通过在设计器中将FormView绑定到一个数据源控件上来实现自动添加。这个自动生成的ItemTemplate包含了用于显示各字段的名称的HTML代码,还有用于显示各字段的值的Label控件,当然了,这些Label控件的Text属性都已经绑定到了各相应的字段上。这个操作也同时生成了InsertItemTemplate和EditItemTemplate,它们为数据源控件的每一个字段都呈现了一个输入控件。

  如果你想要自动生成模板,首先应该使用ProductsBLL类的GetProducts()方法来给FormView添加一个ObjectDataSource控件,通过FormView的智能标签你就可以做到上面的这个操作。这样就可以创建一个带有ItemTemplate、InsertItemTemplate和EditItemTemplate的FormView了。在源视图中,删除InsertItemTemplate和EditItemTemplate,因为我们现在对创建一个可编辑和可插入的FormView并不感兴趣。然后,清空ItemTemplate中的标记语言代码,这样我才可以工作于一个干净的环境上。

  如果你喜欢手工建立ItemTemplate,你可以从工具箱中拖一个ObjectDataSource到设计器中并配置它,这里可不要在设计器中为FormView添加数据源。我们应该到源视图中手工的将ForView的DataSourceID属性设置为ObjectDataSource的ID,然后再手工添加ItemTemplate。不管你决定使用哪种方式,反正最后你的FormView的声明标记代码应该像下面这个样子:

<asp:FormView ID="FormView1" runat="server" DataSourceID="ObjectDataSource1">
  <ItemTemplate>

  </ItemTemplate>
</asp:FormView>
</div>

  花点儿时间到FormView的智能标签中勾上“启用分页(Enable Paging)”复选框,这样可以在FormView的声明标记代码中加上AllowPaging="True"这么一个属性(attribute)。另外,把EnableViewState属性设置为false。

第二步:定义ItemTemplate的标记代码(MarkUp)

  在将FormView绑定到ObjectDataSource控件并且将其配置为支持分页之后,我们就准备指定ItemTemplate的内容了。在本教程中,让我们将产品名称显示在一个<h3>中。跟着让我们使用<table>将余下的产品属性显示在一个四列的表中,其中第一列和第三列用于显示产品属性的名称,第二列和第四列用于显示产品属性的值。

  在设计器中通过FormView的模板编辑界面或是在源视图中手工输入代码都可以添加上面所说的这些标记代码。使用模板的时候,我发现直接在源视图中编代码会来得比较快,不过你可以使用任何一种让你觉得够爽的方式。下面的声明标记代码展示了FormView在完成了ItemTemplate的结构之后所应该有的样子:

<asp:FormView ID="FormView1" runat="server" DataSourceID="ObjectDataSource1"
  AllowPaging="True" EnableViewState="False">
  <ItemTemplate>
    <hr />
    <h3><%# Eval("ProductName") %></h3>
    <table border="0">
      <tr>
        <td class="ProductPropertyLabel">Category:</td>
        <td class="ProductPropertyValue">
         <%# Eval("CategoryName") %></td>
        <td class="ProductPropertyLabel">Supplier:</td>
        <td class="ProductPropertyValue">
         <%# Eval("SupplierName")%></td>
      </tr>
      <tr>
        <td class="ProductPropertyLabel">Price:</td>
        <td class="ProductPropertyValue"><%# Eval("UnitPrice",
         "{0:C}") %></td>
        <td class="ProductPropertyLabel">Units In Stock:</td>
        <td class="ProductPropertyValue">
         <%# Eval("UnitsInStock")%></td>
      </tr>
      <tr>
        <td class="ProductPropertyLabel">Units On Order:</td>
        <td class="ProductPropertyValue">
         <%# Eval("UnitsOnOrder") %></td>
        <td class="ProductPropertyLabel">Reorder Level:</td>
        <td class="ProductPropertyValue">
         <%# Eval("ReorderLevel")%></td>
      </tr>
      <tr>
        <td class="ProductPropertyLabel">Qty/Unit</td>
        <td class="ProductPropertyValue">
         <%# Eval("QuantityPerUnit") %></td>
        <td class="ProductPropertyLabel">Discontinued:</td>
        <td class="ProductPropertyValue">
          <asp:CheckBox runat="server" Enabled="false"
           Checked='<%# Eval("Discontinued") %>' />
        </td>
      </tr>
    </table>
    <hr />
  </ItemTemplate>
</asp:FormView>
</div>

  注意这个数据绑定语法——以<%# Eval("ProductName") %>为例——可以直接插入到模板的输出中。那是因为它没有必要绑定到一个Label控件的Text属性上。举个例子,比如我们要将ProductName的值使用<h3><%# Eval("ProductName") %></h3>来显示在一个<h3>元素中,那么产品“Chai”将被输出为<h3>Chai</h3>。

  CSS类ProductPropertyLabel和ProductPropertyValue用于指定<table>中的产品属性的名称和值的样式。这些CSS类定义在Styles.css中,它们使产品属性的名称粗体显示并且右对齐,它们还给产品属性的值加上一个右填充。

  由于FormView没有CheckBoxField,要将Discontinued的值显示为一个CheckBox的话,我们就必须自己添加一个CheckBox控件。将这个CheckBox控件的Enabled属性设置为false以使其只读,并将其Checked属性绑定到Discontinued字段上去。

  完成了ItemTemplate之后,产品信息就以一种更加不规则的方式来显示了。来比较一下上一节中的DetailsView的输出(图三)和本节所讨论的FormView的输出(图四)。

http://files.weikejianghu.com/file_images/article/201605/2016050616543976.png

图三:生硬的DetailsView输出

http://files.weikejianghu.com/file_images/article/201605/2016050616543977.png

图四:柔和的FormView输出

总结

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 在ASP.NET 2.0中操作数据之十四:使用FormView 的模板

相关文章

  • 2017-05-11浅谈.NET反射机制的性能优化 附实例下载
  • 2017-05-11ASP.NET MVC中图表控件的使用方法
  • 2017-05-11asp.net分页控件AspNetPager的样式美化
  • 2017-05-11ADO与ADO.NET的区别与介绍
  • 2017-05-11ASP.NET 多次提交的解决办法
  • 2017-05-11ASP.NET中弹出消息框的几种常见方法
  • 2018-08-20.NET Core日志配置的方法
  • 2017-05-11aspxgridview CustomButtonCallback 不支持弹出消息提示解决方法
  • 2017-05-11浅谈ASP.NET常用数据绑定控件优劣总结
  • 2017-05-11wireshark抓取本地回环数据包和取出数据的方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 一个基于Asp.Net MVC的权限方案
    • asp.net发邮件的几种方法汇总
    • 用类的继承关系(重写父类的方法)实现简易后台代码模板
    • asp.net的公共变量声明问题(解决)
    • asp.net中生成缩略图并添加版权实例代码
    • Asp.net TreeView来构建用户选择输入的方法 推荐
    • MVC4 基础 枚举生成 DropDownList 实用技巧
    • .NET中函数Main的使用技巧
    • 基于C# 网站地图制作
    • 详解asp.net core封装layui组件示例分享

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有