有很多不同的控件可供选择!确定用于在ASP.NET中显示数据的控件的最佳实践是什么?
答案 0 :(得分:143)
这真的是关于你想要实现的目标
Gridview - 设计有限,像html表一样工作。更多内置功能,如编辑/更新,页面,排序。很多开销。
DataGrid - Gridview的旧版本。 gridview是一个超级数据网格。
Datalist - Gridview的更多可自定义版本。也有一些开销。更多的手动工作,因为你必须自己设计。
ListView - 新的Datalist :)。几乎是datalist和gridview的混合体,您可以在其中使用分页和构建Gridview功能,但具有设计自由度。这个家族中的一个新控件
中继器 - 重量很轻。没有内置功能,如页眉,页脚。开销最小。
答案 1 :(得分:27)
其他人都打了它:它取决于。
现在提供一些具体指导(扩展WebDude上面的优秀答案)......
您的设计是否适合数据的自然电子表格或网格视图?的 GridView的强>
您是否需要显示列表或其他格式化的数据视图,可能包含页眉和页脚,还可能显示每个数据记录的特定控件和/或格式? (EG,自定义链接,可能是LinkButtons,还是特定的编辑控件?)这个显示不显然适合电子表格或网格视图吗?的的ListView 强>
如果您符合ListView的所有条件,但您自然适合网格,则可以考虑 DataList 。
当我只需要一些基本数据与一些自定义设计位,没有标题,没有页脚,漂亮和干净的迭代时,我选择 Repeater 。
答案 2 :(得分:19)
对于所有3(ListView,DataList,Repeater)
,可以声明以下示例代码<asp:ListView runat="server" OnItemCommand="Unnamed1_ItemCommand">
<ItemTemplate> <%# Eval("Name")%> </ItemTemplate>
<asp:ListView>
在以下列表中您可以看到每个列表的可用模板和选项,并查看自己的差异
ListView (请注意编辑,分组,插入,布局)
DataList (请注意样式对)
<强>中继器强>
<强> CompositeDataBoundControl 强>:
查看以下类层次结构(和相关控件)。
这些控件在其模板中托管其他asp.net控件,以向用户显示绑定数据
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需要的代码更少。