我目前在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
有效,但我不确定如何实现。
提前谢谢你的帮助。 : - )
答案 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));
}
}
}