Menambahkan Sort, Search, Filter Paging Di CSHTML
Menambahkan Sort, Search, Filter Paging Di CSHTML
com / contoh 6
.NET Contoh 6
Jadi kita bisa men-sort atau mengurutkan data berdasar kolom Nama Siswa atau Kelas Siswa.
Awalnya…
public ActionResult Index()
{
return View(db.Siswas.ToList());
}
Menjadi…
public ActionResult Index(string sortOrder)
{
ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "nama_desc" : "";
ViewBag.IntSortParm = String.IsNullOrEmpty(sortOrder) ? "kls_desc" : "kls_asc";
var siswa = from s in db.Siswas
select s;
switch (sortOrder)
{
case "nama_desc":
siswa = siswa.OrderByDescending(s => s.NamaSiswa);
break;
case "kls_desc":
siswa = siswa.OrderByDescending(s => s.KelasSiswa);
break;
case "kls_asc":
siswa = siswa.OrderBy(s => s.KelasSiswa);
break;
default:
siswa = siswa.OrderBy(s => s.NamaSiswa);
break;
}
return View(siswa.ToList());
}
Page 1 of 8
© 2017 mztolo.com / contoh 6
Penjelasan :
ViewBag adalah properti yg memungkinkan Anda untuk secara dinamis berbagi nilai-nilai dari Controller
ke View.
String.IsNullOrEmpty(sortOrder) ? "nama_desc" : ""; artinya jika null atau kosong maka
nama_desc jika tidak ya “”.
SWITCH semacam DO CASE di VFP akan mengecek pilihan ordernya, jika pilihannya “nama_desc” maka
data siswa akan dilakukan OrderByDescending.
Jika “kosong” otomatis ascending atau dilakukan OrderBy.
LINQ sendiri merupakan perangkat yg memiliki fitur query yg beragam dan powerfull untuk bahasa C#.
Seperti contoh berikut ini, karena query ini...
Penjelasannya :
Dengan ActionLink di atas user akan memberikan request ke controller untuk memproses sort yg di
inginkan.
Link awalnya spt ini http://localhost:53321/Siswa dan setelah di klik link akan tertulis :
http://localhost:53321/Siswa?sortOrder=nama_desc itu artinya jika di klik lagi sort data akan
descending.
Page 2 of 8
© 2017 mztolo.com / contoh 6
Hasilnya spt ini, Anda bisa klik judul kolom (Nama Siswa, Kelas Siswa) untuk sort berdasar kolom tsb.
if (!String.IsNullOrEmpty(searchString))
{
siswa = siswa.Where(s =>
s.NamaSiswa.ToUpper().Contains(searchString.ToUpper()));
}
switch (sortOrder)
{
@using (Html.BeginForm())
{
<p>
Cari Nama Siswa : @Html.TextBox("SearchString")
<input type="submit" value="Cari" />
</p>
}
<table class="table">
<tr>
Page 3 of 8
© 2017 mztolo.com / contoh 6
Untuk menampilkan semua data lagi, kosongin kolom pencarian dan klik tombol Cari.
Note : Lihat dulu di References, jika sudah ada tdk usah install.
Page 4 of 8
© 2017 mztolo.com / contoh 6
Jika blm ada caranya : Klik menu Tools -> NuGet Package Manager -> Package Manager Console
namespace WebApp.Controllers
{
public class SiswaController : Controller
{
private Koneksi db = new Koneksi();
/*
// GET: Siswa
public ActionResult Index()
{
return View(db.Siswas.ToList());
}
*/
// Method SORT/SEARCH/PAGING
public ActionResult Index(string sortOrder, string searchString, string
currentFilter, int? page)
{
ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "nama_desc" : "";
ViewBag.IntSortParm = String.IsNullOrEmpty(sortOrder) ? "kls_desc" :
"kls_asc";
Page 5 of 8
© 2017 mztolo.com / contoh 6
if (!String.IsNullOrEmpty(searchString))
{
siswa = siswa.Where(s =>
s.NamaSiswa.ToUpper().Contains(searchString.ToUpper()));
}
switch (sortOrder)
{
case "nama_desc":
siswa = siswa.OrderByDescending(s => s.NamaSiswa);
break;
case "kls_desc":
siswa = siswa.OrderByDescending(s => s.KelasSiswa);
break;
case "kls_asc":
siswa = siswa.OrderBy(s => s.KelasSiswa);
break;
default:
siswa = siswa.OrderBy(s => s.NamaSiswa);
break;
}
Page 6 of 8
© 2017 mztolo.com / contoh 6
@* @model IEnumerable<WebApp.Models.Siswa> *@
@{
ViewBag.Title = "Daftar Siswa";
}
<h2>Daftar Siswa</h2>
<p>
@Html.ActionLink("Tambah Data", "Create")
</p>
@* @using (Html.BeginForm()) *@
@using (Html.BeginForm("Index", "Siswa", FormMethod.Get))
{
<p>
@* Cari Nama Siswa : @Html.TextBox("SearchString") *@
Cari Nama Siswa : @Html.TextBox("SearchString", ViewBag.CurrentFilter as string)
<input type="submit" value="Cari" />
</p>
}
Note : @* menandakan tulisan di antaranya adalah teks/remarks dan bukan bagian dari koding atau
koding yg sudah tidak kita pakai lagi, sama persis dengan ** atau && di VFP.
Hanya berlaku di .cshtml kalo di method .cs memakai // atau kalo dlm satu blok dengan /* .. */
Selanjutnya tambahkan script di bawah ini di bagian akhir dari file Index.cshtml
<br />
@* menampilkan hal sd hal.*@
Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount
Page 7 of 8
© 2017 mztolo.com / contoh 6
Terima kasih
Cakep...Sort, Search, Filter Paging sudah bisa, Anda sudah semakin sakti.
Terima kasih.
Page 8 of 8