gpt4 book ai didi

c# - 显示多对多关系(嵌套 ListViews?)

转载 作者:太空狗 更新时间:2023-10-30 00:59:04 27 4
gpt4 key购买 nike

我明白这可能是一个相当简单的问题 - 但我遇到了很多麻烦(作为一个初出茅庐的 ASP.NET 开发人员)。我从 SO 和谷歌那里获得了一些想法,但运气不好,我想我开始过度思考这个问题,这似乎是一个标准的场景,我相信我遗漏了一些明显的东西。

例如,我有三个标准示例表 - 请注意多对多关系。

Students
- student_id
- forename
- surname

Courses
- course_id
- course_name

StudentCourses
- studentcourse_id
- course_id
- student_id

我想在我的 ASP.NET 3.5 Web 应用程序上以类似于(最后一列是允许他们编辑学生信息的按钮)的方式显示这些内容:

Students:
# Name Courses Actions
1 Joe Bloggs Maths, English [Manage]
2 Arthur Sleep English [Manage]
3 Andy Mann Maths, German, French [Manage]

“类(class)”列是学生当前注册的类(class)列表。这可能是空的(尚未注册)或包含他们当前注册类(class)的列表(逗号分隔或标准无序 HTML 列表,我并不珍贵)。这不会是一个庞大的列表,因为学生在任何时候只能注册少数几门类(class)。

我已经尝试了很多解决方案,从 asp:Repeater 到我目前最喜欢的 ListView 3.5。我使用 LINQ to SQL 作为我的数据层(以防由于 LINQ 对多对多关系的复杂支持而很重要)。

最佳答案

您可以使用嵌套中继器。下面的示例调用代码隐藏文件中的辅助方法,该方法返回一个列表。您可以从这里访问所有类(class)信息。我可以使用存储库类中的方法让它工作,所以使用下面的代码来解决这个问题:

protected List<tblStudentCourses> GetStudentCoursesByStudentID(int id)
{
return studentRepository.GetStudentCoursesByStudentID(id).ToList();
}

这里是完整的例子:

<asp:Repeater ID="parentRepeater" runat="server" DataSourceID="myDataSource">
<HeaderTemplate>
Header HTML
</HeaderTemplate>

<ItemTemplate>

<asp:Repeater ID="availabilityRepeater" runat="server" DataSource='<%#GetStudentCoursesByStudentID(Convert.ToInt32(Eval("studentCourseID"))) %>'>
<ItemTemplate>
<%# Eval("tblStudentCourses.courseName") %><br />
</ItemTemplate>
</asp:Repeater>

Student Name example: <%#Eval("studentName")%>

</ItemTemplate>
<FooterTemplate>
Footer HTML
</FooterTemplate>

这可能不是最好的解决方案,但它是一个可行的解决方案,所以我希望它能帮助到你

关于c# - 显示多对多关系(嵌套 ListViews?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1437523/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com