如果使用ASP.NET的Web窗体,然后你可以看看的ListView,DataList和Repeater控件。我会建议你尝试ListView。 Here是关于使用此控件的深层描述。这是非常简单的配置你需要的任何布局:
<asp:ListView runat="server" ID="ListView1">
<LayoutTemplate>
<table>
<tr runat="server" ID="itemPlaceholder" />
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td><%#Eval("YourObjectProp") %></td>
...
</td>
</ItemTemplate>
</asp:ListView>
你可以将你的对象是这样的:
List<AcademicYear> academicYears = new List<AcademicYear>();
var year = new AcademicYear { Year = "08-10" };
year.Students.Add(new Student { Name = "Mzejb Bsppn" });
year.Students.Add(new Student { Name = "Lbuifsjof Bvti" });
...
和布局:
<asp:ListView runat="server" ID="ListView1">
<LayoutTemplate>
<asp:PlaceHolder runat="server" ID="itemPlaceholder" />
</LayoutTemplate>
<ItemTemplate>
<%#Eval("Year") %> students<br />
<asp:ListView runat="server" ID="nestedListView" DataSource='<%# Eval("Students") %>'>
<LayoutTemplate>
<asp:PlaceHolder runat="server" ID="itemPlaceholder" />
</LayoutTemplate>
<ItemTemplate>
<%#Eval("Name") %><br />
</ItemTemplate>
</asp:ListView>
</ItemTemplate>
</asp:ListView>
感谢您的答复添。 是的,我正在使用Web窗体。我可以使用中继控制器在页面上获得所有内容 - 但是我通过这种方式为每个学生获得一行,并且我需要由AcademicYear和TeachingSet进行分组......这就是我坚持不懈的一点。 – 2010-04-16 14:38:53
不客气。您需要对业务模型中的对象进行适当分组,并使用嵌套的ListView或Repeater控件。我使用示例编辑了帖子 – wassertim 2010-04-16 15:01:53
分析师已确定了Student类的模型以及检索列表的方法。所以当页面加载时,我打电话给Process.Students,并有我的列表(学生)。 如果我理解你正确,那么你说的是我应该把它分成页面级别的对象变量?因此,一个List(Of AcademicYears)包含List(Of TeachingSets),其中包含List(Of Students),然后DataBind将我的顶级ListView/Repeater添加到页面变量List(Of AcademicYears)中,而不是我的Process.Students,然后嵌套控件遍历每个子集合? – 2010-04-16 15:32:04