Asp.Net就业课堂之模板控件

举报
tea_year 发表于 2021/12/23 01:22:20 2021/12/23
【摘要】 模板控件 ASP.NET 提供了三个控件,使得在 ASP.NET Web 页面中显示数据绝对比传统 ASP 所需的迭代方式简单得多。 这三个控件是 DataGrid、DataList 和 Repeate...

模板控件

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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

解析:

 1.虽然它们都可以通过模板显示数据,但是DataList和Reperter必须使用模板,而DataGrid还允许 通过 TemplateColumn而只使用模板来显示一列;


 2.数据源属性有好几种,我们熟悉的有DataSet,sqlDataReader,数组等;

  
 
  • 1
  • 2
  • 3
  • 4

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

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

a.从性能看:

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

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

  
 
  • 1

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在格式化设定上的欠缺直接反应到开发时间的延长,其在内建功能(分页,排序及编辑)上的支持也就显得不足了 

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

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

文章来源: aaaedu.blog.csdn.net,作者:tea_year,版权归原作者所有,如需转载,请联系作者。

原文链接:aaaedu.blog.csdn.net/article/details/109388752

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。