2010-04-16 127 views
0

我需要从List(学生)列表中生成表。我的学生类具有AcademicYear,TeachingSet,Surname和Forename的属性,按照该顺序排序,还包含ID和开始日期的属性。该表应为我在http://www.ifslearning.ac.uk/files/student-table.jpg从具有条件布局的业务对象创建表

嘲笑了表所示AcademicYears然后TeachingSets内的学生,中嵌套TeachingSets使用中继器,我得到
08-10学生B74394 Mzejb Bsppn
08-10学生B74395 Lbuifsjof Bvti
08-10学生C68924 Epoob Cmpblf
08-10学生D41468 Ipxbse Dbwfz

但是我需要有
08-10学生
- B74394 Mzejb Bsppn
- B74395 Lbuifsjof Bvti
- C68924 Epoob Cmpblf
- D41468 Ipxbse Dbwfz

回答

0

如果使用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> 
+0

感谢您的答复添。 是的,我正在使用Web窗体。我可以使用中继控制器在页面上获得所有内容 - 但是我通过这种方式为每个学生获得一行,并且我需要由AcademicYear和TeachingSet进行分组......这就是我坚持不懈的一点。 – 2010-04-16 14:38:53

+0

不客气。您需要对业务模型中的对象进行适当分组,并使用嵌套的ListView或Repeater控件。我使用示例编辑了帖子 – wassertim 2010-04-16 15:01:53

+0

分析师已确定了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