次のデータベース エンティティのデータを表のような形式で表示するにはどうすればよいですか。
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 がリストされ、上部に AttendanceDays がリストされたテーブルに並べ替えられたすべての存在/非存在値を含むデータを画面に表示したいと思います。
この情報をどのように並べ替えて表示しますか?
アップデート:
次のコードを (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>
ただし、グリッドは私のニーズに役立つ方法で編成されていません。
表示されたテーブルの上部に次のように表示したい:
1日目 | 2日目 | 3日目 | 「出席日」の最大値までなど(学生がサインアップするコースの作成時に決定されます)。
表示された表の左側を読み取りたい: 学生 ID 1 学生 ID 5 学生 ID 6 学生 ID など。. データセット内のすべての学生が表示されるまで。
コントローラーでこれに沿って何かを使用する必要があると思います:
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);
しかし、Mvc WebGrid を使用してビューに返される IEnumerable<> が必要です。正しい方向に微調整できますか?