模板控件

ASP.NET 提供了三个控件,使得在 ASP.NET Web 页面中显示数据绝对比传统 ASP 所需的迭代方式简单得多。 这三个控件是 DataGrid、DataList 和 Repeater,以后我将称之为模板控件或数据 Web 控件。

DataGrid 使用简单以及它具有允许数据排序、分页和编辑的功能。

在 ASP.NET Web 页面中显示数据时,很多开发人员都选择他们最熟悉的数据 Web 控件,通常是 DataGrid。 但是这样的盲目决定不够明智,因为根本没有通用的“最好的”数据 Web 控件。 决定为给定的 Web 页使用哪个数据 Web 控件时,应该先就以下各种问题自己考虑一下,以确定哪个控件最适合手边的任务。 您想允许用户对数据进行排序吗? 需要把数据用非 HTML

的格式显示吗? 页面会被大量访问吗,因而性能是一个关键的问题吗?

因为 DataGrid 能允许最终用户排序、分页和编辑它的数据,所以这三个数据 Web 控件中 DataGrid Web 控件提供了最好的功能集。 因为使用 DataGrid 时只需要把它添加到 Web 页面中并写几行代码,所以 DataGrid 也是最简单易用的数据 Web 控件。 但是,容易使用和强大的功能是要付出代价的,如性能的代价: DataGrid 是三个数据 Web 控件中效率最低的,特别是当把它放置在 Web 窗体中时。

通过使用模板,DataList 对显示的数据外观提供了比 DataGrid 更多的控制。 但是,使用模板通常比使用 DataGrid 的列类型需要更多的开发时间 DataList 还支持数据的内联编辑,但是实现起来需要的工作量比 DataGrid 多。 遗憾的是,在 DataList 中提供分页和排序支持不是一件简单的事。 DataList 比 DataGrid 提供了更好的性能,从而弥补了这些缺少的内置功能。

最后,Repeater 控件允许对呈现的 HTML 标记进行完整和全面的控制。 对于 Repeater,生成的唯一 HTML 是模板中数据绑定语句的值和模板中指定的 HTML 标记,而不会生成象 DataGrid 和 DataList 那样的“额外”HTML。 由于要求开发人员指定完整生成的 HTML 标记,所以通常 Repeater 需要的开发时间最长。 而且,Repeater 不提供内置编辑、排序或分页支持。 但是,Repeater 的性能确实是这三个数据 Web 控件中最好的。 它的性能可与 DataList 相比,但明显比 DataGrid 好。

1.什么是模板控件呢?

 答:模板是一组 HTML 元素和控件,它们构成控件特定部分的布局,由 HTML和嵌入的服务器控件组成。 当控件在  ASP.NET 网页中运行时,控件基础结构呈现模板的内容,而不是控件的默认  HTML。其实说白了它们就相当于我们在vb.net中常用来显示数据的DataGridView控件2.**那么我们为什么要使用模板控件呢?**我说是为了方便,这样可能大家还不能认可我的解答,下面我来说一下不使用模板时有多麻烦大家就知道啦。Response.Write()这个大家熟悉吧,那么我们想一下要是通过这个方法将数据库中的内容通过一个表格的形式显示出来怎样做呢?我们需要输出一个〈table〉标签,然后开始循环。在循环中,每输出一条记录,需要先输出一个〈tr〉标签以及若干对〈td〉标签和〈/tr〉标签。最后,以一个〈/table〉标签结尾。这样是不是很麻烦呢?ASP.NET帮我们准备了三个Web服务器控件,可以很轻松的将数据库中的数据显示出来。接下来我会通过对比找到它们的相同点和不同点。

解析:

 1.虽然它们都可以通过模板显示数据,但是DataList和Reperter必须使用模板,而DataGrid还允许 通过 TemplateColumn而只使用模板来显示一列;2.数据源属性有好几种,我们熟悉的有DataSet,sqlDataReader,数组等;

​ 3.至于前面我们说的通过表格显示数据还需要一个循环,这里就不用那么麻烦了,DataBind() 方法就帮我们解决啦,它通过遍历一个特定的DataSource中的记录,并对其中的每条记录建立一个条目并对应数据控件的Item集。数据控件中的每个条目将成为一个类的实例。这个类因数据控件的不同就有所区别啦。例如:DataGrid中的 条目是DataGridItem类的一个实例,Reperter中的条目则是RepeaterItem类的一个实例

4.下面我们从某些角度通过三个方面对这三个控件进行比较

a.从性能看:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KN49IdVc-1604047980582)(D:\zyg\web\chapter09\assets\image-20201030161946209.png)]

  表现在:最明显的由DataGrid所生成的ViewState将会相当庞大,特别是在DataGrid含有较多的行时。

b.从可用性看:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vmDoSjwC-1604047980586)(D:\zyg\web\chapter09\assets\image-20201030162035728.png)]

  表现在:1.DataList在定制数据输出样式方面最为灵活通过设定RepeatColumn属性,你可以设 置在一行中显示多少条记录,更进一步,你甚至可以指定DatList的内容不显示在表格中,而〈span〉标签中,这可以通过设定RepearLayout属性来实现 ;2.DataGrid通过设置AllowSorting属性true,并加入少量代码,就具备了按不同字段序 的功能,分页以及单条记录编辑的功能也能过设定属性来解决,但它始终只能是 HTML表格,这是很大的缺陷了,死板;3.Repeater在格式化设定上的欠缺直接反应到开发时间的延长,其在内建功能(分页,排序及编辑)上的支持也就显得不足了

c.从开发时间看:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Stot4oi8-1604047980589)(D:\zyg\web\chapter09\assets\image-20201030162021515.png)]
表现在:

1.实现DataList中的分页、排序功能时需呀通过巧妙的编程加以实现,这就需要耗费一些开发时间;

2.DataGrid通过设置属性就可以实现分页、排序功能;

3.Repeater在格式化设定上的欠缺直接反应到开发时间的延长

**5.那么这三种控件分别在什么时候最容易被使用呢?

分页、排序功能;

3.Repeater在格式化设定上的欠缺直接反应到开发时间的延长

**5.那么这三种控件分别在什么时候最容易被使用呢?

​ 如果需要用户对数据记录进行排序或编辑或更新,删除时使用DataGrid;如果用户要求制定出很特别的数据输出样式则选择DataList;如果用户对于如何显示数据无所谓的话,完全可以放心的使用Repeater

Asp.Net就业课堂之模板控件相关推荐

  1. Asp.Net就业课之三验证控件

    验证控件 作用:验证信息是否正确.有效.合理. 一.数据有效性验证方式 1.后台C#代码验证: ​ 信息页面回传,回传到服务器,用户体验不好,服务器压力大.有很多个客户端网页的时候,1000万级别,会 ...

  2. asp.net模板控件示例

    asp.net模板控件示例 原文:asp.net模板控件示例 模板控件允许将控件数据与其表示形式相分离,模板化控件不提供用户界面. 编写它则是为了实现一个命名容器以及包含属性和方法可由宿主页访问的类, ...

  3. asp.net夜话之八:数据绑定控件

    通过前面的例子我们看到每次我们要显示数据的时候都要通过一个循环来显示满足条件的数据,这是一个比较麻烦的过程,为此微软定义了一系列的控件专门用于显示数据的格式,通过这些控件可以以可视化的方式查看绑定数据 ...

  4. Asp.Net 中使用客户端Activex控件需要注意的事情

    案例:Asp.Net +VB制作的Activex控件 操作系统:Windows2003 +Sp1 现象1:通过     <OBJECT classid="CLSID:132A80F5- ...

  5. JavaScript Repeater 模板控件

    功能强大的模板引擎大都需要对模板进行语法解析,会有性能问题.通过把一个大的模板引擎根据不同呈现需求分隔成多个互相独立模板控件,可以降低处理复杂度提供处理性能,可以根据需求灵活组合这些模板控件得到一个可 ...

  6. Asp.net 2.0 中获取控件输出的Html代码 (转)

    将Asp.net 控件的呈现html获取,在不少场合会用到,比如生成静态页时 以下代码选自 Asp.net 2.0 高级编程 转自:Asp.net 2.0 中获取控件输出的Html代码 public  ...

  7. ASP.NET 实践:使用用户控件实现 Web 部件的个性化

    这个实践示范了如何创建依赖于 Web 部件个性化的 ASP.NET 用户控件,并在 Web 页面中提供用户特定的默认值. ASP.NET Web 部件控件集允许你建立拥有模块化布局的 Web 页面,并 ...

  8. asp.net 上传大文件控件

    这段时间写了个asp.net 上传大文件控件.经过测试,在ie中可显示进度条.特此共享,望广大网友多提意见. 大文件上传控件(包含进度条) 使用说明如下: <summary>      上 ...

  9. repeater控件 php,JavaScript Repeater模板控件

    功能强大的模板引擎大都需要对模板进行语法解析,会有性能问题.通过把一个大的模板引擎根据不同呈现需求分隔成多个互相独立模板控件,可以降低处理复杂度提供处理性能,可以根据需求灵活组合这些模板控件得到一个可 ...

最新文章

  1. ServiceStack 项目实例 001 建立项目结构
  2. docker - 在centos7和windows10安装
  3. webworker应用场景_典型应用场景 · OpenResty最佳实践-最新版 · 看云
  4. 基于HEVC的UHD(超高清4K)视频质量评价
  5. 扒一扒微信后台架构.....
  6. EnvironmentLocationNotFound: Not a conda environment:
  7. NVIDIA GPU简史、命名规则及基础知识
  8. 浅析浏览器书签的导入和导出
  9. JAVA笔试面试题集锦05
  10. 干货!任务型对话中语言理解的鲁棒性测试 |清华刘劼西
  11. 计算机漫游模式,深入理解操作系统之一 —— 计算机系统漫游
  12. Win 10上帝模式 的开启和高级隐藏文件
  13. idea如何全局搜索关键字_IntelliJ 的搜索和全局搜索怎么用
  14. 视频文件损坏怎么修复?简单的修复办法分享
  15. 关于twitter爬虫的总结
  16. C# WinForms窗体淡出效果
  17. MFC TabControl插件 子对话框调用主对话框功能函数和变量
  18. F5 BIG-IP iControl RCE (CVE-2021-22986)
  19. 100阶乘后面有几个0
  20. 隔板法详解(各种方法)(转载)

热门文章

  1. JavaScript 使用[]读取对象属性
  2. java安全编码指南之:线程安全规则
  3. jedisPool.getResource()方法长时间无响应并且不报错
  4. Leet Code OJ 242. Valid Anagram [Difficulty: Easy]
  5. c 用mysql导出xls文件怎么打开_mysql——xls表格的导出和导入(重点)
  6. 报错:The method xxxof type xxx must override or implement a supertype method
  7. python求阶乘和
  8. 安卓期末作品小项目_每日一个财务小知识——洞悉洞晰财务报告第一季
  9. ensp小实验走起来(路由下发、MSTP、VRRP、DHCP、DHCP中继、NAT、链路聚合)之配置
  10. 数据结构与算法常见笔试题 .