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

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

模板控件

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


目录
相关文章
|
2月前
|
SQL 开发框架 前端开发
ASP.NET WEB项目中GridView与Repeater数据绑定控件的用法
ASP.NET WEB项目中GridView与Repeater数据绑定控件的用法
31 0
|
3月前
|
SQL 开发框架 JavaScript
分享33个ASP.NET电子商务源码和40个ASP.NET控件组件源码,总有一款适合您
分享33个ASP.NET电子商务源码和40个ASP.NET控件组件源码,总有一款适合您
29 0
|
4月前
|
JavaScript C#
【傻瓜级JS-DLL-WINCC-PLC交互】2.wincc使用C#开发的.net控件
【傻瓜级JS-DLL-WINCC-PLC交互】2.wincc使用C#开发的.net控件
37 0
|
4月前
|
JavaScript Linux C#
【傻瓜级JS-DLL-WINCC-PLC交互】1.C#用windows窗体控件创建.net控件
【傻瓜级JS-DLL-WINCC-PLC交互】1.C#用windows窗体控件创建.net控件
61 0
|
4月前
|
开发框架 .NET 数据安全/隐私保护
Asp.Net第二章服务器端控件
Asp.Net第二章服务器端控件
24 0
|
4月前
|
开发框架 JavaScript .NET
Asp.Net就业课之三验证控件
Asp.Net就业课之三验证控件
44 0
|
4月前
|
开发框架 .NET
Asp.Net就业课之案例实践第二次课
Asp.Net就业课之案例实践第二次课
22 0
Asp.Net就业课之案例实践第二次课
|
4月前
|
存储 开发框架 .NET
Asp.net就业课之Ado.net第一次课
Asp.net就业课之Ado.net第一次课
20 0
|
3月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
38 0
|
1月前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
94 5