ASP.NET Repeater - 显示数据绑定列表<t> </t> </t1>的属性列表<t1>

时间:2011-10-12 14:25:31

标签: c# asp.net repeater

我在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>

我不知道如何完成我需要做的事。

你能指出我正确的方向吗?我对其他可以很好地显示这些数据的方式持开放态度。提前谢谢!

1 个答案:

答案 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”标签内。

希望这有帮助