Anda di halaman 1dari 5

© 2017 mztolo.

com / contoh 9

.NET Contoh 9

List Materi di Detail Siswa.


Copy WebApp007 ke WebApp008, selanjutnya kita akan membuat list materi di Detail Siswa.

Hasilnya nanti akan spt ini.

Caranya sangat mudah, Anda tinggal menambahkan skrip berikut di Views\Siswa\Detail.cshtml


<dd>
@Html.DisplayFor(model => model.KelasSiswa)
</dd>

<dd>
<table class="table">
<tr>
<th>Nama Materi</th>
<th>Nilai</th>
</tr>
@foreach (var item in Model.Materis)
{
<tr>
<td> @Html.DisplayFor(modelItem => item.NamaMateri) </td>
<td> @Html.DisplayFor(modelItem => item.NilaiMateri) </td>
</tr>
}
</table>
</dd>

</dl>
</div>

Page 1 of 5
© 2017 mztolo.com / contoh 9

Yap, hanya itu..mudah kan ?!

Tapi jgn lupa di model Siswa.cs harus ada ini :


public virtual ICollection<Materi> Materis { get; set; }

Menampilkan Jml Materi yg diikuti oleh Siswa


Sekarang kita akan mencoba menampilkan jml materi (count) yg diikuti oleh siswa, spt ini :

Mari kita mulai…

Langkah 1, buat folder di project WebApp dengan nama ViewModels.

Folder ini bisa kita artikan sbg tempat model khusus yg berhubungan dengan data tampilan saja.

Page 2 of 5
© 2017 mztolo.com / contoh 9

Langkah 2, membuat model di folder tsb di atas ViewModels\MateriGroup.cs dgn isi spt ini.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace WebApp.ViewModels
{
public class MateriGroup
{
public string NmMateri { get; set; }
public int JmlSiswa { get; set; }
}
}

Langkah 3, menambahkan koding berikut di Controllers\MateriController.cs

using WebApp.ViewModels;

namespace WebApp.Controllers
{
public class MateriController : Controller
{
private Koneksi db = new Koneksi();

public ActionResult Tampil()


{
IQueryable<MateriGroup> data = from materi in db.Materis

group materi by materi.NamaMateri into materiGroup


select new MateriGroup()
{
NmMateri = materiGroup.Key,
JmlSiswa = materiGroup.Count()
};
return View(data.ToList());
}

// GET: Materi
public ActionResult Index()
{

Note :

Perhatikan yg diberi warna kuning, method tsb untuk query jml materi (count) berdasar
group nama materi yg dikuti oleh siswa.

Karna hanya contoh maka saya memakai nama materi yg notabene bisa rangkap2 jika salah
ketik, semisal “Bhs Inggris” dengan “Bahasa Inggris”.

Tugas Anda untuk desain database yg cakep secara aturan penulisan dan normalisasi
datanya.

Btw, Anda juga bisa membuat sendiri controllernya tanpa hrs digabung dengan
MateriController, jika membuat baru jgn lupa teks yg diberi warna hijau muda.

Page 3 of 5
© 2017 mztolo.com / contoh 9

Langkah 4, membuat view empty dengan nama Tampil untuk menampilkan hasil count controller
di atas.

Isi nya file Views\Materi\Tampil.cshtml nya spt ini.


@model IEnumerable<WebApp.ViewModels.MateriGroup>
@{
ViewBag.Title = "Jumlah Materi";
}
<h2>Jumlah Materi Yang Diikuti Siswa</h2>
<table>
<tr>
<th>
Nama Materi
</th>
<th>
</th>
<th>
Jml Siswa
</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.NmMateri)
</td>
<td>
</td>
<td>
@item.JmlSiswa
</td>
</tr>
}
</table>

Note : Untuk hanya menampilkan data Anda bisa memakai IEnumerable.

Page 4 of 5
© 2017 mztolo.com / contoh 9

Langkah 5, menambahkan link menu di Views\Shared\_Layout.cshtml spt ini.


<li>@Html.ActionLink("Materi", "Index", "Materi")</li>
<li>@Html.ActionLink("Jml Materi", "Tampil", "Materi")</li>

Note :

Tampil mengacu pada nama method di MateriController.cs

Materi mengacu pada nama lokasi route view nya yaitu folder Views\Materi.

Terima kasih
Demikian cara menampilkan detail dengan merelasikan 2 tabel.

Begitu juga cara query tabel dengan memakai IQueryable, serta menjumlahkan dengan count.

Tetap semangat.

Terima kasih.

Page 5 of 5

Anda mungkin juga menyukai