学生、コース、登録、および出席のモデルがあります。コースごとに出席日数が異なるため、それらの日数の出席を編集できる必要があります。
私は次のモデルを使用しています:
public class Student
{
public int StudentID { get; set; }
public string LastName { get; set; }
public string FirstMidName { get; set; }
public virtual ICollection<Enrollment> Enrollments { get; set; } // To keep track of what classes in which the student is enrolled
}
public class Course
{
public int CourseID { get; set; }
public string Title { get; set; }
public int InstructorID { get; set; }
public virtual Instructor Instructor { get; set; }
public int AttendingDays { get; set; } // Total number of days for attendance
public virtual ICollection<Enrollment> Enrollments { get; set; }
}
public class Enrollment
{
public int EnrollmentID { get; set; }
public int CourseID { get; set; }
public int StudentID { get; set; }
public virtual Course Course { get; set; }
public virtual Student Student { get; set; }
}
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; }
}
Course クラスの AttendingDays int に応じて、指定されたクラスの出席日数を適切に調整して出席テーブルを編集できる ViewModel を構築するにはどうすればよいでしょうか。
つまり、クラス X の AttendingDays 値が 10 の場合、10 行の出席日が必要です。これを下に移動して、各生徒の出席/欠席のチェックボックスを埋めることができますが、クラス Y には 3 つの出席日しかありません。.
ID 25: コース X では、3 日目に生徒 X が出席しました。ID26: コース X では、4 日目の学生 X が欠席したなど。.
これにアプローチする最も効率的な方法は何ですか?
アップデート:
ここで、生徒がクラスに追加されると、出席可能なすべての日について、生徒が Present = false としてマークされる出席データベース エントリを作成します。
生徒ごとに適切な出席日が常に作成されていることがわかったので、ViewModel はどのように機能するでしょうか?
Course に含まれるすべての Student の行を表示するページを生成する必要があります (この情報は Enrollment テーブルに含まれています)。各生徒の行には、出席日ごとのチェックボックスが含まれます (したがって、左側に生徒名がリストされ、上部に出席日を表す番号が表示されたチェックボックスのグリッドが画面全体に表示されます)。
編集:
これはjqGridが役立つものでしょうか?