中继器,ListView,DataList,DataGrid,GridView …哪个可以select?

这么多不同的控件可供select! 什么是确定哪个控件用于在ASP.NET中显示数据的最佳实践?

这是关于你想达到什么

  • Gridview – devise有限,像html表一样工作。 更多的build设function,如编辑/更新,页面,sorting。 大量的开销。

  • DataGrid – Gridview的旧版本。 一个gridview是一个超级数据网格。

  • Datalist – 更多可定制的Gridview版本。 也有一些开销。 更多的手工工作,你必须自己devise。

  • ListView – 新的Datalist :)。 几乎是datalist和gridview的混合体,你可以在Gridview中使用分页和构buildfunction,但是有devise的自由。 在这个家庭的新控制之一

  • 中继器 – 非常轻的重量。 没有内置的function,如标题,页脚。 有最小的开销。

其他人都打它:取决于。

现在有一些具体的指导(扩展WebDude上面的优秀答案)…

您的devise是否适合数据的自然电子表格或网格视图? GridView

你需要显示一个列表或其他格式的数据视图,可能与页眉和页脚,并可能为每个数据logging的特定控制和/或格式? (EG,自定义链接,可能是LinkBut​​tons,或特定的编辑控件?)这个显示是否明确地适合电子表格或网格视图? 列表显示

如果你符合ListView的所有标准,但你自然会适应一个网格,你可以考虑DataList

当我只需要一些基本的数据迭代一些自定义的devise位,没有标题,没有页脚,很好,干净,我去的中继器

标记视图

声明以下示例代码是可能的所有3(ListView,DataList,Repeater)

<asp:ListView runat="server" OnItemCommand="Unnamed1_ItemCommand"> <ItemTemplate> <%# Eval("Name")%> </ItemTemplate> <asp:ListView> 

在下面的列表中你可以看到每个人可用的模板和选项,看看你自己的差异

ListView (注意编辑,分组,插入,布局)

  • AlternatingltemTemplate
  • EditltemTemplate
  • EmptyDataTemplate
  • EmptyltemTemplate
  • GroupSeparatorTemplate
  • GroupTemplate
  • lnsertltemTemplate
  • ItemSeparatorTemplate
  • ItemTemplate中
  • LayoutTemplate模板
  • SelectedltemTemplate

DataList (注意样式对)

  • AlternatingltemStyle
  • AlternatingltemTemplate
  • EditltemStyle
  • EditltemTemplate
  • FooterStyle
  • FooterTemplate
  • HeaderStyle
  • HeaderTemplate中
  • ItemStyle
  • ItemTemplate中
  • SelectedltemStyle
  • SelectedltemTemplate
  • SeparatorStyle
  • SeparatorTemplate

中继器

  • AlternatingltemTemplate
  • FooterTemplate
  • HeaderTemplate中
  • ItemTemplate中
  • SeparatorTemplate

代码视图(高级视图)

CompositeDataBoundControl

看下面的类层次结构(和相关的控件)。

这些控件在其模板中托pipe其他asp.net控件,以向用户显示绑定数据

CompositeDataBoundControl类(和相关控件)

一些描述更好的说明

ListView控件

ListView控件还使用模板来显示数据。 但是,它支持许多额外的模板,在处理数据时可以使用更多的场景。 这些模板包括LayoutTemplate,GroupTemplate,ItemSeparatorTemplate

ListView控件( 与DataList和Repeater不同 )还隐式支持使用数据源控件编辑,插入和删除数据的function。 您可以为每种情况定义单独的模板。

DataList控件

DataList控件像Repeater控件一样工作。 它会重复数据集中每一行的数据,并根据您定义的模板显示这些数据。 但是 ,它将模板中定义的数据放在各种HTML结构中。 这包括水平或垂直布局的选项, 还允许您设置数据如何重复,如stream程或表格布局。

DataList控件不会自动使用数据源控件来编辑数据。 相反,它提供了命令事件 ,可以在这些事件中为这些场景编写自己的代码。 要启用这些事件,请将Button控件添加到其中一个模板,并将该button的CommandName属性设置为edit,delete,update或cancel关键字。 然后由DataList控件引发适当的事件。

中继器控制

Repeater控件也使用模板来定义自定义绑定。 但是,它不会将数据显示为单个logging。 而是按照您在模板中指定的方式重复数据行。 这使您可以创build一行数据并在整个页面上重复使用。

Repeater控件是一个只读模板。 也就是说,它只支持ItemTemplate。 它不隐式支持编辑,插入和删除。 如果您需要此function,您应该考虑其他控件之一,否则您将不得不为自己的Repeater控件编码


以上描述来自MCTS考试70-515 Web应用程序开发与Microsoft.NET框架4书。

DataGrid在本书中甚至没有提及,并且被stream行的GridView取代,并被其他用户很好地回答

确实! 我已经讨论了ASP.NET 4.0数据工具之间的差异。 基本上,GridView是expression信息的最有效的方式,而ListView控件是用于更复杂的重复数据显示。 如果我向ASP.NET新手提供build议,我会告诉他们从头开始学习gridviews并忽略其他控件。

这一切都取决于你想如何布局你的数据。

如果你需要控制布局(比如表格和CSS对比),那么在使用Repeater或者ListView的时候。 在这两者之间,ListView为您提供了更多的事件和内置的编辑,select,插入命令。 另外分页和分组function。 一个Repeater是非常简单的,它重复与数据的布局。 由于您正在构build布局,Listview和Repeater需要更多的代码。

GridView是一个更新的DataGrid,所以几乎没有任何理由使用DataGrid。 当连接到标准的ASP.NET数据源时,GridView工作得非常好,但是将您限制在一个包含大量布局规则的表格式布局中。 由于使用了内置布局,因此GridView需要的代码更less。