Reputation: 9073
I have a generic list
List<StudentInfo>
StudentInfo has
Name,Marks,Subject,Age as properties.
I get this StudentInfo back as as list, which am trying to bind to a repeater.
<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
Expected result on repeater databinding is - data should be display per subject
English
John Smith
85
12
John Doe
78
12
Chemistry
Mary Ann
72
14
I tried to use nested repeater, but not getting the expected result. The below one just gives me only subject back when the code behind is
myParent.DataSource = listOfStudentInfo;
myParent.DataBind();
How do i make the child repeater to show the rest?
<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>
Upvotes: 0
Views: 171
Reputation: 1086
change your datasource Model to have enumerable
of StudentInfo
object like this,
public class Model{
public string Subject {get; set;}
public IEnumerable<StudentInfo> StudentInfo {get; set;}
}
Then your parent repeater have subject property and nested repeater have StudentInfo as DataSource,
<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>
And your dataSource for Parents goes like this,
myParent.DataSource = listOfModel;
myParent.DataBind();
Upvotes: 1