我在C#中有一个对象列表,我正在尝试绑定到Repeater。这是我班级的简化示例:
public class LineDetail
{
public int ClassID { get; set; }
public IPerson Teacher { get; set; }
public IList<IPerson> Students { get; set; }
public string ClassTitle { get; set; }
public DateTime StartTime { get; set; }
public DateTime EndTime { get; set; }
}
困惑的部分是学生财产。当然,我将我的列表绑定到转发器:
LineItems.Sort((x, y) => DateTime.Compare(x.StartTime, y.StartTime));
ResultsPanel.Visible = true;
Schedule.DataSource = Meetings;
Schedule.DataBind();
我宣布我的转发器:
<asp:Repeater ID="Schedule" runat="server">
<HeaderTemplate>
<table width="650" border="1" bordercolor="#222222">
<tr>
<td> Time </td>
<td> Teacher </td>
<td> Class Title </td>
<td> Students </td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<%# Convert.ToDateTime(DataBinder.Eval(Container.DataItem, "StartTime")).ToString("h:mm")%>
-
<%# Convert.ToDateTime(DataBinder.Eval(Container.DataItem, "EndTime")).ToString("h:mm")%>
</td>
<td> <%# DataBinder.Eval(Container.DataItem, "Teacher").ToString() %> </td>
<td> <%# DataBinder.Eval(Container.DataItem, "ClassTitle")%> </td>
<td> <%# DataBinder.Eval(Container.DataItem, "Students")%> </td>
</tr>
</ItemTemplate>
<FooterTemplate></table></FooterTemplate>
</asp:Repeater>
但我不知道如何(或者甚至可能)输出List Students属性。我尝试了一个嵌套的转发器,但是没有用。自编译以来,我不认为它与语法有关。
我的内心转发器是:
<td>
<asp:Repeater id="ParliamentarianRepeater" runat="server">
<HeaderTemplate><ul></HeaderTemplate>
<ItemTemplate>
<li>
<%# DataBinder.Eval(Container.DataItem, "Students.Firstname") %>
</li>
</ItemTemplate>
<FooterTemplate></ul></FooterTemplate>
</asp:Repeater>
</td>
我不知道如何完成我需要做的事。
你能指出我正确的方向吗?我对其他可以很好地显示这些数据的方式持开放态度。提前谢谢!答案 0 :(得分:4)
您必须为Inner Repeater设置DataSource
您的内部转发器代码应如下所示
<td><asp:Repeater id="ParliamentarianRepeater" runat="server" DataSource='<%# DataBinder.Eval(Container.DataItem, "Students")%>'>
<HeaderTemplate><ul></HeaderTemplate>
<FooterTemplate></ul></FooterTemplate>
<ItemTemplate>
<li>
<%# DataBinder.Eval(Container.DataItem, "Firstname") %>
</li>
</ItemTemplate>
</asp:Repeater>
</td>
内部转发器必须位于父转发器的“ItemTemplate”标签内。
希望这有帮助