2

我目前在ListView. 我有一个普通的 C#Student类和一个Classroom类。在Classroom类中包含一个Student类列表,如下所示:

public class Classroom
{
    int classroomid {set;get;}
    List<Students> students{set;get;}
}

我的问题是,如果我将我DataSource的绑定ListView到 的对象列表,Classroom我如何在 中呈现Student列表ListView

<ListView>
    <ItemTemplate>
        <asp:Label Text='<%# Eval("classroomid") %>'></asp:Label>
        <asp:Label Text='<%# Eval("students") %>'</asp:Label>
        <asp:Label Text='<%# Eval("students.name") %>'</asp:Label>
    </ItemTemplate>
</ListView>

上面的代码基本上解释了我想要实现的目标,或者可能显示学生的详细信息,例如姓名等。有什么方法可以实现吗?我确实了解嵌套的ListView作品,但我不确定实施如何。提前谢谢你的帮助。:-)

4

1 回答 1

1

你可以使用string.Join

<asp:Label runat="server" ID="LblStudents"
    Text='<%# string.Join(",", (List<string>)Eval("students")) %>'>
</asp:Label>

编辑:我错过了这Student是一种自定义类型。因此,为了便于阅读,您最好在 ListView 的ItemDataBound事件中执行此操作。

但它也应该适用于 aspx:

<asp:Label runat="server" ID="LblStudents"
    Text='<%# string.Join(",", ((List<Student>)Eval("students")).Select(s=>s.Name)) %>'>
</asp:Label>

在代码隐藏中:

protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e)
{
    if (e.Item.ItemType == ListViewItemType.DataItem)
    {
        Label LblStudents = (Label)e.Item.FindControl("LblStudents");

        Classroom cr = e.Item.DataItem as Classroom;
        if (cr != null && cr.students != null && cr.students.Count > 0)   
        {
            LblStudents.Text = string.Join(",", cr.students.Select(s => s.Name));
        }
    }
}
于 2012-05-14T13:04:54.747 回答