Repeater,ListView,DataList,DataGrid,GridView ......有哪些选择?

时间:2008-09-26 12:43:51

标签: asp.net user-interface

有很多不同的控件可供选择!确定用于在ASP.NET中显示数据的控件的最佳实践是什么?

5 个答案:

答案 0 :(得分:143)

这真的是关于你想要实现的目标

  • Gridview - 设计有限,像html表一样工作。更多内置功能,如编辑/更新,页面,排序。很多开销。

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

  • Datalist - Gridview的更多可自定义版本。也有一些开销。更多的手动工作,因为你必须自己设计。

  • ListView - 新的Datalist :)。几乎是datalist和gridview的混合体,您可以在其中使用分页和构建Gridview功能,但具有设计自由度。这个家族中的一个新控件

  • 中继器 - 重量很轻。没有内置功能,如页眉,页脚。开销最小。

答案 1 :(得分:27)

其他人都打了它:它取决于。

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

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

您是否需要显示列表或其他格式化的数据视图,可能包含页眉和页脚,还可能显示每个数据记录的特定控件和/或格式? (EG,自定义链接,可能是LinkBut​​tons,还是特定的编辑控件?)这个显示显然适合电子表格或网格视图吗?的的ListView

如果您符合ListView的所有条件,但您自然适合网格,则可以考虑 DataList

当我只需要一些基本数据与一些自定义设计位,没有标题,没有页脚,漂亮和干净的迭代时,我选择 Repeater

答案 2 :(得分:19)

标记视图

对于所有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

查看以下类层次结构(和相关控件)。

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

The CompositeDataBoundControl classes(and related controls)

有关更好说明的一些说明

ListView控件

ListView控件还使用模板显示数据。但是,它支持许多 其他模板,在处理数据时允许更多方案。这些模板包括 LayoutTemplate,GroupTemplate,ItemSeparatorTemplate

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

DataList控件

DataList控件与Repeater 控件一样工作。它重复数据集中每一行的数据, 它会根据您定义的模板显示此数据。 然而,它列出了定义的数据 在各种HTML结构中的模板中。这包括水平或垂直选项 布局,它还允许您设置数据的重复方式,如流程或表格布局。

DataList控件不会自动使用数据源控件来编辑数据。代替, 提供命令事件,您可以在其中为这些方案编写自己的代码。至 启用这些事件,您可以将Button控件添加到其中一个模板并设置按钮 CommandName属性用于编辑,删除,更新或取消关键字。适当的 然后由DataList控件引发事件。

转发器控件

Repeater控件还使用模板来定义自定义绑定。但是,它不会将数据显示为单个记录。相反,它会重复您在模板中指定的数据行。这个 允许您创建单行数据并在页面中重复。

Repeater控件是只读模板。也就是说,它只支持ItemTemplate。 它不会隐式支持编辑,插入和删除。你应该考虑其中一个 其他控件如果您需要此功能,否则您必须自己编码 中继器控制。


以上说明来自 MCTS Exam 70-515 Web Applications Development with Microsoft.NET Framework 4 一书。

本书中甚至没有提到DataGrid,它被流行的GridView取代并被其他用户很好地回答

答案 3 :(得分:6)

事实上!我在博客上发表了ASP.NET 4.0 data tools之间的差异。基本上,gridviews是呈现表格信息的最有效方式,而ListView控件则用于更复杂的重复数据显示。如果我向ASP.NET新手提供建议,我会告诉他们从里面学习网格视图并忽略其他控件开始。

答案 4 :(得分:5)

这完全取决于您希望如何布局数据。

如果你需要控制布局(比如表格与CSS对比),使用Repeater或ListView时。在这两者之间,ListView为您提供了更多的事件和内置命令,用于编辑,选择和插入。另外还有分页和分组功能。 Repeater非常简单,它使用数据重复布局。由于您手动构建布局,因此Listview和Repeater需要更多代码。

GridView是一个更新的DataGrid,因此几乎没有理由使用DataGrid。 GridView在连接到标准ASP.NET数据源时工作得很好,但是限制了您使用具有大量布局规则的表格布局。由于您使用的是内置布局,因此GridView需要的代码更少。