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

mat*_*uma 111 asp.net user-interface

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

Web*_*ude 144

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

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

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

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

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

  • 中继器 - 重量很轻.没有像Headers,Footers这样的内置功能.开销最小.

  • 它仍然是最新的答案吗?(因为它是从2008年开始的,它是2013年) (12认同)
  • @Michel Repeater自.NET 4.5以来变为强类型.我非常喜欢那个. (3认同)
  • 嗯.."没有内置的功能,如页眉,页脚",嗯,有HeaderTemplate和FooterTemplate ..如果你想放入像你的<table>和</ table>标签. (2认同)

Joh*_*udy 28

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

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

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

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

如果您满足ListView的所有条件,但您自然适合网格,则可以考虑使用DataList.

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


Ima*_*idi 19

标记视图

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

<asp:ListView runat="server" OnItemCommand="Unnamed1_ItemCommand">
<ItemTemplate> <%# Eval("Name")%>    </ItemTemplate>
<asp:ListView>
Run Code Online (Sandbox Code Playgroud)

在以下列表中您可以查看每个列表的可用模板和选项,并自行查看差异

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

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

DataList(注意Style对)

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

中继器

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

代码视图(高级视图)

CompositeDataBoundControl:

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

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

CompositeDataBoundControl类(和相关控件)

一些描述可以更好地澄清

ListView控件

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

ListView控件(与DataList和Repeater不同)也隐式支持使用数据源控件编辑,插入和删除数据的功能.您可以为每个方案定义单独的模板.

DataList控件

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

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

中继器控制

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

Repeater控件是只读模板.也就是说,它只支持ItemTemplate.它不会隐式支持编辑,插入和删除.如果需要此功能,则应考虑其他控件之一,否则您必须自己为Repeater控件编写代码.


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

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


And*_*own 6

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


Jos*_*gle 5

这一切都取决于您希望如何布局数据.

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

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