Kalau di pikir versi Grid terlalu sederhana dan kalau pakai Form akan tidak sederhana bukan?
Mari kita coba lihat seperti apa kalau menggunakan UI model Form.


Form

Desain untuk UI model Form akan menampilkan data lewat DataGridView dan pada control-fields per-record-nya.
Seperti yang terlihat di bawah, ada beberapa tombol untuk berinteraksi dengan data.

Form
Form in Design


Yang terjadi pada Form ini adalah data yang di masukkan kedalam DataGridView pada saat load.
Akan juga di tampilkan ke dalam control-fields mengikuti apa yang terpilih di DataGridView.
Dan kita DataGridView-nya hanya bertindak sebagai penampil data saja.

Merubah data, cukup kita tekan tombol Edit.
Dari sana control-fields akan Enabled agar kita bisa merubah data.
Baik ada perubahan data atau tidak, kita tekan tombol Save untuk kembali ke mode Read.
DataTable mengerti bila ada perubahan atau tidak.

Pada saat ini pula, tombol Delete aktif.
Yang berarti kalau ingin menghapus data bisa di lakukan di sini.

Menambah data di lakukan dengan menekan tombol Add.
Di sini control-fields akan memiliki default-data sebagai awal.
Setelah kita masukkan data-nya dan tekan tombol Save.
Di sini juga ada opsi untuk tidak jadi menambah data.
Untuk itu kita tekan tombol Cancel.

Form
Form in Action


CRUD Form

Sekarang kita akan membedah apa yang terjadi dalam Form tersebut.
Agar tidak terlalu banyak event untuk menyambungkan data dengan control, maka kita gunakan binding.
Jadi data yang ada di DataGridView dan control-fields terhubung lewat ini.
Dan juga kita menggunakan class Repo dan class DataTableExtensions yang sama.


Create (C)

Karena ini di sisi penguna maka kita berinteraksi dengan DataTable.
Oleh karena itu, kita ikuti tatacara yang berlaku untuk manambahkan data.

VB.Net
Function Add - VB.Net
C#
Function Add - C#


Read (R)

Membaca data dari database di lakukan pada class Repo.
Ada dua titik di mana kita mengambil data di sini.

Pertama pada saat Form ini di panggil.
Dan ini terjadi di constructor class-nya.
Datanya di masukkan ke dalam BindingSource.
Dari situ baru kita hubungkan dengan DataGridView lewat DataSource.
Untuk control-fields kita juga set sesuai dengan tujuan data-nya.

VB.Net
Read on Contructor - VB.Net
C#
Read on Contructor - C#


Dan kita akan membaca database pada saat selesai men-sinkronisasi data.
Ini terjadi di dalam fungsi SyncData.

VB.Net
Read in Function Sync - VB.Net
C#
Read in Function Sync - C#


Update (U)

Update hampir sama dengan penambahan row.
Bedanya kita cari dahulu di DataTable, lalu merubahnya.

Tapi di sini kita tidak perlu lakukan, karena data-nya sudah ter-binding ke control-fields.
Yang perlu di lakukan adalah meng-Enabled-kan control-fields agar bisa di gunakan.


Delete (D)

Dalam fungsi DataDelete ada dua cara Delete yang di lakukan.
Yang pertama untuk menghapus data yang sudah ada, untuk di sinkronisasi ke database.
Di sini kita gunakan cara fungsi DataRow.Delete.
karena ini untuk simulasi DataTable maka kita gunakan cara di atas.
Bisa juga di gunakan fungsi RemoveCurrent.
Ini bukan benar-benar menghapus dari DataTable yang ada, ini Delete ini hanya merubah status RowState

Kita juga melakukan Delete yang lain.
Kali ini data di DataTable benar-benar di hapus.
Ini di lakukan karena pada saat kita menggunakan fungsi NewRow, maka data sudah masuk ke dalam DataTable.
Dan kita tidak mau data itu ter-sinkronisasi ke dalam database.
Fungsi yang di gunakan adalah fungsi Remove.

VB.Net
Function Delete - VB.Net
C#
Function Delete - C#


FormDataAdapterSimple

Agar semua itu dapat bekerja seperti yang di harapkan.
Maka kita juga buat beberapa fungsi untuk itu.
Semua itu lebih hubungannya dengan UI di Form-nya.

VB.Net
Class FormDataAdapterSimple - VB.Net
C#
Class FormDataAdapterSimple - C#


Penutup

Untuk urusan database dan CRUD-nya ternyata tidak banyak juga.
Mungkin terlihat sedikit lebih rumit dengan penambahan kode untuk UI-nya.

Perlu di ingat tulisan ini mengfokuskan penggunaan DataAdapter dengan DataTable dalam Form.
Bagaimanapun kalau bicara UI dan pengguna maka bukan sekadar CRUD saja.


Referensi


History


Map



.net c# vb.net ado.net winform sql-server