c# – 显示多对多关系(嵌套ListViews?)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 显示多对多关系(嵌套ListViews?),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1836字,纯文字阅读大概需要3分钟。
内容图文
我很欣赏这可能是一个相当简单的问题 – 但我遇到了很多麻烦(作为一个狡猾的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]
“课程”栏目列出了学生目前注册的课程.这可能是空的(尚未注册)或包含他们当前注册课程的列表(逗号分隔或标准无序HTML列表,我不珍贵).这不会是一个庞大的列表,因为学生只能在任何时候注册一些课程.
我尝试了很多解决方案,从asp:Repeater到我目前最喜欢的,带有3.5的ListView.我正在使用LINQ to SQL作为我的数据层(如果由于LINQ复杂支持多对多关系而很重要).
解决方法:
很简单,您可以在“Student”类中添加几个新属性,如下所示(在C#中):
public IEnumerable<Course> Courses
{
get { return CourseRepository.GetCoursesByStudentId(this.Student_Id); }
}
//Aggregate course names into a comma-separated list
public string CoursesDescription
{
get
{
if (!Courses.Any())
return "Not enrolled in any courses";
return Courses.Aggregate(string.Empty, (currentOutput, c) =>
(!String.IsNullOrEmpty(currentOutput)) ?
string.Format("{0}, {1}", currentOutput, c.Course_Name) : c.Course_Name );
}
}
现在,当您只需要一个转发器(绑定到您的学生集合)时,因为子转发器的需要被Student类的“CoursesDescription”属性删除.
顺便说一句,我强烈建议以单数形式命名表(即在1行代表之后命名它们).此外,还有一个很好的例子,即从StudentCourses表中删除标识列,并将其替换为Student_Id和Course_Id之间的复合键.
希望这可以帮助.
内容总结
以上是互联网集市为您收集整理的c# – 显示多对多关系(嵌套ListViews?)全部内容,希望文章能够帮你解决c# – 显示多对多关系(嵌套ListViews?)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。