以分组方式将通用列表数据显示回转发器

Display generic list data back to repeater in a grouped manner

我有一个通用列表

List<StudentInfo>

StudentInfo 有

Name,Marks,Subject,Age as properties.

我将此 StudentInfo 作为列表返回,它正在尝试绑定到转发器。

<asp:Repeater ID="myRepeater" runat="server">
            <ItemTemplate>                
                     <%# Eval("Name") %>                
                     <%# Eval("Marks") %>
                     <%# Eval("Subject") %>
                     <%# Eval("Age") %>                  
            </ItemTemplate>
        </asp:Repeater>

Output i am getting:

John Smith
85
English
12
John Doe
78
English
12
Mary Ann
72
Chemistry
14

转发器数据绑定的预期结果是 - 应按主题显示数据

English

John Smith
85
12
John Doe
78
12


Chemistry

Mary Ann
72
14

我尝试使用嵌套转发器,但没有得到预期的结果。当后面的代码是

时,下面的只是给我返回主题
              myParent.DataSource = listOfStudentInfo;

              myParent.DataBind();

如何让子中继器显示其余的?

 <asp:Repeater ID="myParent" runat="server">
            <ItemTemplate>               
                        <%# Eval("Subject") %>                  
                <asp:Repeater runat="server" ID="myChild">
                 <ItemTemplate>               
                         <%# Eval("Name") %>   
                         <%# Eval("Marks") %>   
                         <%# Eval("Age") %>   
                  </ItemTemplate>
                 </asp:Repeater> 
               </ItemTemplate>
</asp:Repeater>

更改您的数据源模型,使其具有 enumerableStudentInfo 对象,像这样,

public class Model{
  public string Subject {get; set;}
  public IEnumerable<StudentInfo> StudentInfo {get; set;}
}

那么你的父转发器有主题 属性 并且嵌套转发器有 StudentInfo 作为数据源,

<asp:Repeater ID="myParent" runat="server">
            <ItemTemplate>               
                        <%# Eval("Subject") %>                  
                <asp:Repeater runat="server" ID="myChild" DataSource='<%# Eval("StudentInfo ") %>'>
                 <ItemTemplate>               
                         <%# Eval("Name") %>   
                         <%# Eval("Marks") %>   
                         <%# Eval("Age") %>   
                  </ItemTemplate>
                 </asp:Repeater> 
               </ItemTemplate>
</asp:Repeater>

你的 Parents 数据源是这样的,

              myParent.DataSource = listOfModel;    
              myParent.DataBind();