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 がリストされ、上部に 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<> が必要です。正しい方向に微調整できますか?

4

1 に答える 1

1

かなり一般的な一連の要件については、これがASP.NETWebGridの適切な候補であるように思われます。柔軟性があり、ページング、並べ替え、書式設定などが可能です。いくつかのプロジェクトで使用しており、ASP.NETMVCでおそらく慣れている他のHTMLヘルパーと同じように機能します。

ここが良い出発点です。

于 2012-04-28T01:54:23.570 に答える