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


目录
相关文章
|
3月前
|
开发框架 JavaScript 前端开发
震撼!破解 ASP.NET 服务器控件 Button 执行顺序之谜,颠覆你的开发认知!
【8月更文挑战第16天】在ASP.NET开发中,通过Button控件实现先执行JavaScript再触后台处理的需求十分常见。例如,在用户点击按钮前需前端验证或提示,确保操作无误后再传递数据至后台深度处理。此过程可通过设置Button的`OnClientClick`属性调用自定义JavaScript函数完成验证;若验证通过,则继续触发后台事件。此外,结合jQuery也能达到相同效果,利用`__doPostBack`手动触发服务器端事件。这种方式增强了应用的交互性和用户体验。
48 8
|
1月前
|
开发者 Windows
.NET 开源扁平化、美观的 C/S 控件库
【10月更文挑战第23天】介绍了三款适用于 .NET 平台的开源扁平化、美观的 C/S 控件库:MaterialSkin 采用 Google Material Design 风格,适合现代感界面;Krypton Toolkit 提供丰富控件,界面易于定制;Fluent Ribbon Control Suite 模仿 Office 界面,适合复杂功能应用。每款控件库均附有示例代码及 GitHub 链接。
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
本文讨论了在基于.NET 6和.NET Framework的WinForms项目中添加图表控件的不同方法。由于.NET 6的WinForms项目默认不包含Chart控件,可以通过NuGet包管理器安装如ScottPlot等图表插件。而对于基于.NET Framework的WinForms项目,Chart控件是默认存在的,也可以通过NuGet安装额外的图表插件,例如LiveCharts。文中提供了通过NuGet添加图表控件的步骤和截图说明。
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
|
1月前
|
C# Android开发 iOS开发
一组.NET MAUI绘制的开源控件 - AlohaKit
一组.NET MAUI绘制的开源控件 - AlohaKit
|
2月前
|
开发框架 JavaScript 前端开发
|
6月前
|
SQL 开发框架 JavaScript
分享33个ASP.NET电子商务源码和40个ASP.NET控件组件源码,总有一款适合您
分享33个ASP.NET电子商务源码和40个ASP.NET控件组件源码,总有一款适合您
87 0
|
6月前
|
SQL 开发框架 前端开发
ASP.NET WEB项目中GridView与Repeater数据绑定控件的用法
ASP.NET WEB项目中GridView与Repeater数据绑定控件的用法
84 0
|
6月前
|
JavaScript C#
【傻瓜级JS-DLL-WINCC-PLC交互】2.wincc使用C#开发的.net控件
【傻瓜级JS-DLL-WINCC-PLC交互】2.wincc使用C#开发的.net控件
118 0
|
前端开发 JavaScript .NET
NET中验证控件表达式汇总
ASP.NET为开发人员提供了一整套完整的服务器控件来验证用户输入的信息是否有效。这些控件如下:     1、RequiredFieldValidator:验证一个必填字段,如果这个字段没填,那么,将不能提交信息。
988 0
|
2月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
43 7