如何在listview中显示对象List属性

时间:2012-05-14 13:02:15

标签: c# asp.net listview

我目前在ListView中显示某些内容时遇到问题。我有一个普通的C#Student类和一个Classroom类。在Classroom类中包含Student类的列表,如下所示:

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

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

Student

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

1 个答案:

答案 0 :(得分: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));
        }
    }
}