编程语言
首页 > 编程语言> > c#-ASP.NET Repeater-显示数据绑定列表的属性列表

c#-ASP.NET Repeater-显示数据绑定列表的属性列表

作者:互联网

我正在尝试绑定到Repeater的C#对象列表.这是我班的简化示例:

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>

我不知道该如何完成我需要做的事情.

您能指出我正确的方向吗?我愿意以其他方式很好地显示此数据.提前致谢!

解决方法:

您必须为内部中继器设置数据源

您的内部中继器代码应如下所示

<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”标签内.

希望这可以帮助

标签:repeater,asp-net,c
来源: https://codeday.me/bug/20191102/1988979.html