Pada BLAZOR
Lisensi Dokumen:
Copyright © 2003 IlmuKomputer.Com
Seluruh dokumen di IlmuKomputer.Com dapat digunakan, dimodifikasi dan
disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat
tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang
disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang,
kecuali mendapatkan ijin terlebih dahulu dari IlmuKomputer.Com.
Abstrak
Blazor adalah Web Framework yang bersifat Open Source dimana aplikasi Web yang
bersifat client-side interactive dapat dikembangkan dengan menggunakan .Net (C#) dan
HTML. Pada saat ini C# biasa digunakan untuk melakukan proses back-end dari aplikasi
web. Dengan menggunakan fitur baru dari ASP.NET Core yaitu Blazor, kita dapat
membangun interactive WEB dengan menggunakan C# dan .NET .
Code .Net berjalan pada WebAssembly, yang artinya kita dapat menjalankan “NET“
didalam browser (Client) tanpa harus menginstall plugin seperti Silverlight, Java mapun
Flash.
CRUD Blazor
Junindar, ST, MCPD, MOS, MCT, MVP .NET
Pendahuluan
Blazor adalah Web Framework yang bersifat Open Source dimana aplikasi Web yang
bersifat client-side interactive dapat dikembangkan dengan menggunakan .Net (C#) dan
HTML. Pada saat ini C# biasa digunakan untuk melakukan proses back-end dari aplikasi
web. Dengan menggunakan fitur baru dari ASP.NET Core yaitu Blazor, kita dapat
membangun interactive WEB dengan menggunakan C# dan .NET .
Code .Net berjalan pada Web Assembly, yang artinya kita dapat menjalankan “NET“
didalam browser (Client) tanpa harus menginstall plugin seperti Silverlight, Java mapun
Flash.
Note : Link untuk Project ini ada pada Bab Penutup
CRUD Blazor
Junindar, ST, MCPD, MOS, MCT, MVP .NET
client (browser) dan server app. Sebagai contoh jika user melakukan proses klik button
pada browser, maka data akan dikirmkan ke Server menggunakan SignalR dan hasilnya
akan dikembalikan ke client dengan mengupdate DOM pada client.
CRUD Blazor
Junindar, ST, MCPD, MOS, MCT, MVP .NET
- Component Class
@page "/counter"
<h1>Counter</h1>
@code {
int currentCount = 0;
void IncrementCount()
{
currentCount++;
}
}
Pada block function (@code) kita bisa mendifinisikan property maupun method yang
digunakan pada HTML. Seperti contoh method “IncrementCount“ digunakan pada
event onclick pada button “Click Me“. Pada saat blazor di-compile, maka HTML dan
C# akan dikonversi menjadi component class.
- Component Members
Merupakan member dari component class yang terdapat pada @function block. Kita
dapat memiliki lebih dari satu @function block untuk setiap component. Untuk
menggunakan component member seperti function maupun variable pada HTML,
maka kita harus menggunakan simbol “@“ pada awal nama member.
Pada contoh sebelumnya sintaks HTML dan C# kita gabungkan dalam satu file.
Sebenarnya kita dapat memisahkan HTML dan C# pada file yang berbeda.
using Microsoft.AspNetCore.Components;
namespace LatihanBlazor.Pages
{
public class CounterClass : ComponentBase
{
public int CurrentCount { get; set; }
Diatas merupakan behind class dari component counter yang telah kita buat sebelumnya.
Kita pindahkan sintaks C# pada file terpisah dengan nama CounterClass.cs. Selanjutnya
pada razor, kita tambah kan sebuah baris code @inherits CounterClass, seperti pada
contoh dibawah ini.
CRUD Blazor
Junindar, ST, MCPD, MOS, MCT, MVP .NET
@page "/counter"
@inherits CounterClass
<h1>Counter</h1>
Setelah selesai dengan penjelasan diatas, maka selanjutnya kita akan membuat blazor
component untuk menampilkan data buku, seperti pada gambar dibawah.
CRUD Blazor
Junindar, ST, MCPD, MOS, MCT, MVP .NET
Pada class diatas akan menggunakan base class dari component. Dibawah ini
merupakan detail sintaks pada class tersebut.
public string PanelText { get; set; }
[Parameter]
public string CategoryName { get; set; }
[Inject]
public IBookRepository BookRepository { get; set; }
public IEnumerable<Book> Books { get; set; }
Pada awal baris ketikkan sintaks diatas, untuk memastikan file ini akan terhubung
dengan class yang telah kita buat sebelumnya (CardBookBase). Untuk detail sintaks
pada file ini dapat dilihat pada project lampiran. Sebagai informasi data-data buku
tersebut akan ditampilkan didalam sebuah panel, dimana header panel berisikan teks
dan button-button dari Nama Category. Button-button ini berfungsi untuk
menampilkan data buku berdasarkan Nama Category.
CRUD Blazor
Junindar, ST, MCPD, MOS, MCT, MVP .NET
<div class="panel-heading" style="height: 43.38px">
<label >@PanelText</label>
<div style="display:inline-block; position:relative; right:-55%;">
<button type="button" class="btn btn-primary btn-xs"
@onclick="@(() => ShowBookCategoryAsync("Teknologi"))">Teknologi</button>
<button type="button" class="btn btn-primary btn-xs"
@onclick="@(() => ShowBookCategoryAsync("Agama"))">Agama</button>
<button type="button" class="btn btn-primary btn-xs"
@onclick="@(() => ShowBookCategoryAsync("Bahasa"))">Bahasa</button>
<button type="button" class="btn btn-primary btn-xs"
@onclick="@(() => ShowBookCategoryAsync("Sosial"))">Sosial</button>
</div>
</div>
Pada sintaks di atas dapat dilihat, setiap event click pada button menggunakan method
“ShowBookCategoryAsync“ dengan mengirimkan nilai ke paramater berupa Nama
Category yang akan digunakan untuk pencarian data.
Hasil dari method diatas (ShowBookCategoryAsync) akan ditampilkan pada panel-
body, seperti dibawah.
@foreach (var book in Books)
{
<div class="col-md-4">
<div class="card" style="height: 450px;" align="center">
<a asp-action="DetailBook" asp-route-id="@book.BookID">
<img src="/images/@book.Gambar" height="250" width="200" />
</a>
<div style="padding: 9px;color:#333">
<h6 style="text-align: center">@book.Judul</h6>
<h5 style="text-align: center">@book.Penulis</h5>
<h6 style="text-align: center">@book.Penerbit</h6>
@{
if (book.Status)
{
<p style="text-align: center">
<a class="btn btn-success" role="button"
data-bukuId="@book.BookID"
data-bukuImage="@book.Gambar"
data-bukuJudul="@book.Judul"
data-bukuPenulis="@book.Penulis"
style="margin-top: 10px;color:white!important">
<span class="glyphicon glyphicon-shopping-cart"></span> Add To Cart
</a>
</p>
}
}
</div>
</div>
</div>
}
Data-data buku yang ditampilkan akan berbentuk Thumbnail, dan akan menampilkan
Judul, Penulis dan Penerbit Buku. Dan jika Status dari buku adalah true atau tersedia
maka akan menampilkan button “Add To Cart”.
- Selanjutnya untuk menggunakan component yang telah kita buat diatas, buka file
index.razor pada folder Pages dan tambah sintaks seperti dibawah.
CRUD Blazor
Junindar, ST, MCPD, MOS, MCT, MVP .NET
<div class="row">
<CardBook CategoryName="Teknologi"></CardBook>
</div>
Tag CarBook adalah nama dari component, lalu diikuti dengan CategoryName yang
merupakan property pada CardBookBase yang telah kita set menjadi parameter.
Jalankan project dan pastikan hasilnya sama seperti contoh diatas.
[Parameter]
public string BookId { get; set; }
- Tambahkan dua buah method Show dan Close seperti dibawah. Method Show
digunakan untuk menampilkan data berdasarkan Buku ID dan mengganti property
ShowDialog menjadi true. Sedangkan method Close untuk menutup dialog component
pada layar.
CRUD Blazor
Junindar, ST, MCPD, MOS, MCT, MVP .NET
public async void Show(int bookid)
{
CategoryId = "";
Categories = await CategoryRepository.GetAll();
ImageData = string.Empty;
fs = null;
file = null;
if (bookid == 0)
{
Book = new Book();
}
else
{
ShowDialog = true;
}
- Pada method “HandleValidSubmit“ yang telah kita buat sebelumnya terdapat sintaks
NavigationManager, hapus baris sintaks tersebut. Dan tambah dua baris sintaks
berikut ini.
ShowDialog = false;
await CloseEventCallback.InvokeAsync(true);
CRUD Blazor
Junindar, ST, MCPD, MOS, MCT, MVP .NET
<div class="modal fade show d-block" id="exampleModal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content" style="width: 800px !important;">
<div class="modal-header">
<h5 class="modal-title" id="titleLabel">Add/Edit/Delete Book</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"
@onclick="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
</div>
</div>
</div>
</div>
CRUD Blazor
Junindar, ST, MCPD, MOS, MCT, MVP .NET
sehingga pada saat component dibuka tidak perlu melakukan pencarian data buku
terlebih dahulu.
<div class="row">
<button @onclick="@(() => AddEditBookShow(0))"
class="btn btn-outline-primary">Tambah Buku</button>
</div>
Untuk button Edit, parameter BookID kita gunakan BookId hasil dari query data pada
table.
<button @onclick="@(() => AddEditBookShow(book.BookID))"
class="btn btn-primary table-btn"> <i class="fas fa-edit"></i>
</button>
- Jalankan program dan pastikan mendapatkan hasil seperti pada gambar dibawah ini.
CRUD Blazor
Junindar, ST, MCPD, MOS, MCT, MVP .NET
Dialog Ubah Data Buku.
Penutup
Sedangkan untuk memudahkan dalam memahami isi artikel, maka penulis juga
menyertakan dengan full source code project latihan ini, dan dapat di download disini
http://junindar.blogspot.com/2020/07/membuat-dialog-component-pada-blazor.html
Semoga bermanfaat.
Wassalam.
CRUD Blazor
Junindar, ST, MCPD, MOS, MCT, MVP .NET
Referensi
https://play.google.com/store/books/details?id=G4tFDgAAQBAJ
https://play.google.com/store/books/details?id=VSLiDQAAQBAJ
CRUD Blazor
Junindar, ST, MCPD, MOS, MCT, MVP .NET
https://play.google.com/store/books/details/Junindar_Xamarin_Forms?id=6Wg-DwAAQBAJ
https://play.google.com/store/books/details/Junindar_C_dan_Dapper_Membangun_Aplikasi_POS_P
oint?id=6TErDwAAQBAJ
CRUD Blazor
Junindar, ST, MCPD, MOS, MCT, MVP .NET
https://play.google.com/store/books/details/Junindar_ASP_NET_MVC_Membangun_Aplikasi_Web_
Lebih?id=XLlyDwAAQBAJ
https://play.google.com/store/books/details/Junindar_ASP_NET_CORE_MVC?id=x
Ee5DwAAQBAJ
CRUD Blazor
Junindar, ST, MCPD, MOS, MCT, MVP .NET
Biografi Penulis.
CRUD Blazor
Junindar, ST, MCPD, MOS, MCT, MVP .NET