0

如何以类似于表格的格式显示来自以下数据库实体的数据:

public class Attendance
{
    public int AttendanceID { get; set; }
    public int CourseID { get; set; }
    public int StudentID { get; set; }
    public int AttendanceDay { get; set; }
    public bool Present { get; set; }
    public virtual Course Course { get; set; }
    public virtual Student Student { get; set; }
}

我想在出勤数据库条目中找到 CourseID == x; 的所有行 所以我会使用类似的东西:

AttendanceData = Attendance.Where(s => s.CourseID == x); // I think

然后我需要能够在我的视图中对这些信息进行排序,以便以一种有意义的方式显示它。我希望在屏幕上显示所有当前/不存在值的数据,这些数据在表格中排序,左侧列出了 StudentID,顶部列出了出勤日。

我将如何排序和显示这些信息?

更新:

使用以下代码(连同 Mvc WebGrid)——我可以让某种网格出现在我的视图中。

控制器:

IEnumerable<Attendance> model = db.Attendance.Where(s => s.CourseID == 4);
return View(model);

看法:

@model IEnumerable<MyProject.Models.Attendance>

<div>
@{
    var grid = new WebGrid(Model, defaultSort: "Name");
}

    @grid.GetHtml()

</div>

但是,网格的组织方式不适合我的需要。

我希望显示的表格顶部显示:

第一天 | 第 2 天 | 第 3 天 | 等等,直到“出勤日”的最大值(在创建学生注册的课程时决定)。

我希望显示表格的左侧显示: Student ID 1 Student ID 5 Student ID 6 Student ID etc 。. 直到数据集中的所有学生都被显示出来。

我想我需要在我的控制器中使用类似的东西:

var model = from s in db.Attendance
                        where s.CourseID == 4
                        group s.AttendanceDay by s.StudentID into t
                        select new
                        {
                            StudentID = t.Key,
                            Days = t.OrderBy(x => x)
                        };
return View(model);

但是我需要一个 IEnumerable<> 使用 Mvc WebGrid 返回到我的视图中——我正在到达某个地方,只是在此过程中仍然有点迷失。我可以向正确的方向轻推吗?

4

1 回答 1

1

对于一组相当典型的要求,听起来这将是 ASP.NET WebGrid 的一个很好的候选者。它很灵活,允许分页、排序、格式化等。我在一些项目中使用过它,它的工作方式与您可能在 ASP.NET MVC 中使用的任何其他 HTML 帮助程序一样。

这是一个很好的起点。

于 2012-04-28T01:54:23.570 回答