Friday, February 19, 2010

CRUD(create,update,delete) in GridView ASP.net

Dengan memanfaatkan CRUD bawaan yang ada di gridview, kita akan lebih menghemat form yang akan digunakan di page.
Buat sebuah gridview di sebuah page.

di properties gridview:
Set AutoGenerateEditButton= true
Set AutoGenerateDeleteButton=true
Set AutoGenerateSelectButton=true

GRidView anda akan tampak seperti gambar berikut
:


Modify code [file].aspx anda di bagian ".../>" sehingga code nya menjadi seperti di bawah ini:
OnRowUpdating="[namaViewGrid]_RowUpdating" OnRowCancelingEdit="
[namaViewGrid]_RowCancelingEdit" OnRowDeleting="[namaViewGrid]_RowDeleting"
AllowSorting="True" AutoGenerateColumns="False"
AutoGenerateEditButton="True"
AutoGenerateDeleteButton="True"
AutoGenerateSelectButton="True">

Dibagian badan gridview potongan code nya akan seperti ini:

code_id sebagai primary key, jadi saya tambahkan ReadOnly="true" dan dalam template BoundField. Sedangkan contact_type tadinya BoundField, tapi karena saya akan mengupdate datanya langsung di gridview maka saya ubah jadi EditItemTemplate dan didalamnya tambahkan asp:TextBox . Sedangkan asp:Label untuk berfungsi pada saat menampilkan nilai field dalam posisi read, bukan pada saat diedit.

Pada saat link edit di klik, maka akan memanggil fungsi :
Protected Sub dgAPLContact_RowUpdating(ByVal source As Object, ByVal e As GridViewUpdateEventArgs) Handles dgAPLContact.RowUpdating
...
..
..
end sub

Di dalam fungsi inilah new value dari setiap field diambil dengan cara:
1. Untuk field yang read only:
Dim contact_id as String =dgAPLContact.Rows(e.RowIndex).Cells(3).Text

2.Untuk field yang dalam bentuk textbox
Dim contact_type as String = CType(gvr.FindControl("contact_type"), TextBox).Text

Yang terakhir, agar data yang di update langsung di tampilkan,jangan lupa untuk menambahkan:

BindData()
dgAPLContact.EditIndex = -1
e.Cancel = True


Enjoy this knowledge guys :)