中继器,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,自定义链接,可能是LinkButtons,或特定的编辑控件?)这个显示是否明确地不适合电子表格或网格视图? 列表显示
如果你符合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控件,以向用户显示绑定数据
一些描述更好的说明
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。