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

本文关键字:数据 列表 显示 转发器 方式 | 更新日期: 2023-09-27 18:36:46

>我有一个通用列表

List<StudentInfo>

学生信息有

Name,Marks,Subject,Age as properties.

我把这个学生信息作为列表返回,它试图绑定到中继器。

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

我得到的输出:

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>

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

将数据源模型更改为具有StudentInfo对象的enumerable,如下所示,

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>

你的父母数据源是这样的,

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