DataGrid Web控件是ASP.NET中一个十分常用,也是功能最丰富的控件之一。本文介绍了DataGrid Web控件的工作原理以及一些特点。

DataGrid Web控件是三个ASP.NET数据Web控件中功用最多的。正如前文所述,DataGrid Web控件从WebControl类中诞生,因而能够指定自己想要的款式。可是在自定义控件生成的实践 HTML 符号时,它又是最不灵敏的。 出现的 HTML 符号中的这种不灵敏性,是因为 DataGrid 是规划用于运用 HTML< table>以表格方式显现数据所形成的。 因而,关于每一条绑定到 DataGrid 的记载,都会创立一个独自的表行( < tr>),关于要显现的记载中的每一个字段,都会创立一个独自的表列( < td>)。

DataGrid Web控件供给了许多功用,可极大地提高要显现的数据的可用性。 例如,把 DataGrid 的AllowSorting特点设置为 True 并增加一点源代码,开发人员就能够把一个一般的 DataGrid 变成一个其数据能够由最终用户排序的 DataGrid。 别的,再增加一点工作量,开发人员就能增强 DataGrid 的功用以答应数据分页或数据的内联修改。 这些功用显着增强了 DataGrid 的可用性。

除了在可用性方面得分很高,DataGrid 还供给了很短的开发时刻。 要运用 DataGrid 开端在 ASP.NET Web 页面中显现数据,只需求把 DataGrid 增加到 Web 页面中并编写两行必要的代码: ***行把数据绑定到 DataGrid 的DataSource,第二行调用 DataGrid 的 DataBind()办法。 显着,跟着增加到 DataGrid 中的功用数量的增加,开发时刻也增加了,但这只是把开发时刻和其他数据 Web 控件进行比较。 假定您要答应对 Repeater 显现的数据进行排序。 增加这样的功用是必定或许的,可是与用 DataGrid 完结相同的操作比较,这需求显着多许多的时刻和精力。

尽管 DataGrid 具有杰出的可用性和开发时刻得分,可是这个控件有两个固有的缺陷。 ***,正如前面所谈到的,DataGrid 在对所出现的 HTML 符号进行自定义方面的功用很有限。 是的,您能够自定义 DataGrid 的不同行和列的字体、色彩和边框,可是现实依然是,当 DataGrid 显现数据时,成果将是一个 HTML< table>, DataSource中的每一条记载都对应其间一个 < tr>,每一个字段都对应其间一个 < td>。

具体地说,DataGrid 中的每一列都是一个从DataGridColumn类中派生的类实例。 有五个内置的 DataGrid 列类型:

BoundColumn

ButtonColumn

EditColumn

HyperLinkColumn

TemplateColumn

每一个列类型都供给数据或供给某种答应用户和 DataGrid 进行交互的接口。 例如,BoundColumn 以纯文本显现DataSource字段的值,而 HyperLinkColumn 则会显现一个超级链接,其文字和 URL 部分或许是 DataSource字段。 除了这些内置的列类型,经过创立 DataGridColumn类的派生类,还能够创立自定义 DataGrid 列类型。

有了这么多的 DataGrid 列类型,或许就不了解为什么 DataGrid 出现的 HTML 符号不能进行高度自定义了。 要知道,尽管每一个 DataGrid 列类型在出现时生成不同的 HTML,可是每一列都包括在一组< td>符号中,每一行都包括在一组 < tr>符号中。 因而,即便能够用 TemplateColumn 自定义每一行的特定列的 HTML 输出,而 DataGrid 依然出现为 HTML < table>,其间每一行运用一个 < tr>,每一列运用一个 < td>。 DataGrid 的这种约束制止了更多具有创造性的数据显现。 例如,假如要在每一表行中显现五条记载,就不能运用 DataGrid,有必要运用DataList 或 Repeater。 别的,假如要在除 < table>之外的 HTML 符号中显现数据,很惋惜,就不能运用 DataGrid 了。

DataGrid 第二个缺陷是它的功用。 DataGrid 是这三个数据 Web 控件中功用最差的。 根据这一点,由 DataGrid - 特别是具有许多行的 DataGrids - 发生的 ViewState 或许会非常大。 假如运用 DataGrid 只是是为了显现数据,则能够封闭 ViewState,可是,运用 DataGrid 的排序、分页或修改功用时,就不能这样做了。

为了测验 DataGrid 的功用,我运用了 Microsoft 的免费 Web Application Stress Tool (WAST)。 在本文***的“基准设置”一节中列出了准确的测验条件和 WAST 设置。 别的,测验运用的代码也可在本文***下载。

这个 Web Application Stress Tool 会向 Web 服务器宣布一组特定的 URL 恳求。 关于每一项测验,我都在一分钟之内尽或许快地不断恳求一个 URL。 WAST 报告了许多功用衡量标准;我要重视的一个衡量标准是每秒恳求数,它表明晰 Web 服务器每秒能履行多少次 ASP.NET Web 页面。

关于一个仅显现数据的简略 DataGrid,运行了两个测验。 具体地说,DataGrid 显现了来自 Northwinds 数据库的 Customers 表(Customers 表诚实包括 91 条记载)的四个字段。 DataGrid 的AutoGenerateColumns特点设置为 True。 ***项测验把 DataGrid 放在一个 Web 窗体( < form runat="server">)中,而第二项测验则没有。 假如在窗体中放置一个控件而不把它的 EnableViewState特点显式设置为 False,那么该控件则会用 ViewState 坚持它的状况。 创立这个 ViewState 项或许是一个比较费时的进程,因而减少了可处理的总的每秒恳求数,成果如图 1 所示。

DataGrid Web控件运作机制探秘(datagrid控件详解)  Web控件 第1张

图 1: DataGrid 的每秒恳求数

应该说,DataGrid Web控件的功用并不是很抱负。

【修改引荐】

  1. 小议ASP.NET数据Web控件之间的相似性
  2. 从传统ASP到ASP.NET的改变:了解控件
  3. ASP.NET调试API之Log4net运用指南
  4. 运用ASP.NET模板生成HTML静态页面的五种计划
  5. ASP.NET Login控件运用办法及须知
转载请说明出处
知优网 » DataGrid Web控件运作机制探秘(datagrid控件详解)

发表评论

您需要后才能发表评论