题
我从事 ASP.NET 开发已经有一段时间了,之前我曾使用 GridView 和 DataGrid 控件来完成各种任务,但我从来没有找到使用其中之一的真正充分理由。我想知道:
这 2 个 ASP.NET 控件有什么区别?两者的优点或缺点是什么?有一个更快吗?较新?更容易维护?
控件的智能感知摘要似乎没有描述两者之间的任何区别。它们都可以查看、编辑和排序数据,并在运行时自动生成列。
编辑: Visual Studio 2008 不再将 DataGrid 列为工具箱中的可用控件。如果您手动输入它,它仍然可用(我假设是为了遗留支持)。
解决方案
DataGrid 是一个 ASP.NET 1.1 控件,仍然受支持。GridView 2.0 到来,使某些任务变得更简单,添加了不同的数据绑定功能:
此链接有 DataGrid 和 GridView 功能的比较 -
https://msdn.microsoft.com/en-us/library/05yye6k9(v=vs.100).aspx
其他提示
这 GridView
控制是继任者 DataGrid
控制。像 DataGrid
控制, 的 GridView
控件设计用于在 HTML 表格中显示数据。当绑定到数据源时, DataGrid
和 GridView
每个控件显示一行 DataSource
作为输出表中的一行。
这俩 DataGrid
和 GridView
控制源自 WebControl
班级。尽管它具有与 DataGrid
与 GridView 控件相比,GridView 控件还具有许多新功能和优点 DataGrid
控制,其中包括:
- 更丰富的设计时功能。
- 改进的数据源绑定功能。
- 自动处理排序、分页、更新和删除。
- 其他列类型和设计时列操作。
- 具有 PagerTemplate 属性的自定义寻呼机用户界面 (UI)。
之间的差异 GridView
控制和 DataGrid
控制包括:
- 不同的自定义分页支持。
- 不同的事件模型。
使用时,数据的排序、分页和就地编辑需要额外的编码 DataGrid
控制。这 GridView
该控件使您能够添加排序、分页和编辑功能,而无需编写任何代码。相反,您可以通过设置控件的属性来自动执行这些任务以及其他常见任务,例如将数据绑定到数据源。
DataGrid 最初出现在 .NET 1.0 中。GridView 在 .NET 2.0 中引入(并取代了 DataGrid)。它们提供几乎相同的功能。
如果您使用的是 Visual Studio 2008 / .NET 3.5,您可能不应该使用其中任何一个。使用 ListView - 它为您提供 GridView 的功能以及转发器的样式灵活性。
主要区别在于 ViewState 管理 IIRC。DataGrid 需要打开 ViewState 才能具有编辑和排序功能。
安全方面的一个关键区别是 DataGrid 使用 BoundColumn,它不对绑定数据进行 HtmlEncode。也没有用于打开或关闭 HtmlEncoding 的属性,因此您需要以某种方式在代码中执行此操作。
GridView 使用 BoundField,它默认对绑定数据执行 HtmlEncode,如果您需要将其关闭,它有一个 HtmlEncode 属性。
数据网格
DataGrid
被介绍为Asp.Net 1.0
.- 为了排序,我们需要处理
SortCommand event
并需要重新用网格,对于分页,我们需要处理PageIndexChanged event
并重新绑定所需的网格。 - 需要编写代码来实现Update和Delete操作。
- 不支持自动格式或样式功能。
- 与以下相比,性能很快
GridView
.
网格视图
- GridView 的引入是
Asp.Net 2.0
. - 内置支持
Paging and Sorting
. - 内置支持
Update and Delete operations
. - 支持自动格式或样式功能。
- 与以下相比,性能较慢
DataGrid
.
这 events
和 properties
喜欢 Item
已更改为 Row
.
例如,
ItemCommand - RowCommand
ItemDataBound - RowDataBound
e.Item.ItemType - e.Row.RowType
gridview 和详细信息视图之间的一些基本区别
与 DataGrid 控件相比,GridView 控件还具有许多新功能和优点,其中包括:
· 更丰富的设计时功能。· 改进的数据源绑定功能。· 自动处理排序、分页、更新和删除。· 其他列类型和设计时列操作。· 具有 PagerTemplate 属性的自定义寻呼机用户界面 (UI)。
GridView 控件和 DataGrid 控件之间的差异包括:· 不同的自定义分页支持。· 不同的事件模型。
差异之一是 HTML 输出。datagrid 将输出标题的 TD,而 gridview 将输出 TH。这可能会导致显示发生不直观的变化。