Modifikasi melalui kontrol DataGridView merupakan cara yang praktis dan sederhana. Disini anda tidak perlu melibakan banyak kontrol cukup menggunakan kontrol dDataGridView dan Button (Jika diperlukan). Seperti halnya Anda melakukan modifikasi melalui textbox kontrol DataGridView memungkinkan untuk diguanakan dalam menambah,mengubah,menghapus data. Oleh karena kita mengandalkan DataGridView untuk modifikasi data table, pastikan bahwa property ReadOnly bernilai false. Ketika property ini bernilai true maka DataGridView hanya boleh dibaca saja, akibatnya kode anda juga tidak akan bekerja. Untuk lebih jelasnya, buat project baru dan tambahkan beberapa kontrol seperti bagan berikut :

Label1 Text = Modifikasi Data Lewat DataGrid
DataGridView Name = DataGridView1
Buuton1 Name =BtnSimpan
Text = &Simpan
Sehingga berbentuk seperti gambar berikut :


Lalu lengkapi program anda dengan kode dibawah ini :
   1: Imports MySql.Data.MySqlClient
   2: Public Class Form1
   3:     Inherits System.Windows.Forms.Form
   4:     Dim conn As MySqlConnection
   5:     Dim adapter As MySqlDataAdapter
   6:     Dim ds As New DataSet
   7:  
   8:     Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
   9:         adapter.Dispose()
  10:         conn.Dispose()
  11:     End Sub
  12:  
  13:     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  14:         Dim Constr As String
  15:         Constr = "server=localhost;" & "user=root;" & "password='';" & "database=latihan1;"
  16:         Dim sqlstr As String = "select * from anggota"
  17:         adapter = New MySqlDataAdapter
  18:         Try
  19:             conn = New MySqlConnection(Constr)
  20:             conn.Open()
  21:             adapter.SelectCommand = New MySqlCommand(sqlstr, conn)
  22:             Dim cb As MySqlCommandBuilder
  23:             cb = New MySqlCommandBuilder(adapter)
  24:             adapter.Fill(ds, "anggota")
  25:             DataGridView1.DataSource = ds
  26:             DataGridView1.DataMember = "anggota"
  27:         Catch ex As Exception
  28:             MessageBox.Show(ex.Message)
  29:         End Try
  30:     End Sub
  31:  
  32:     Private Sub BtnSimpan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSimpan.Click
  33:         'Penambahan Data
  34:          Dim dschange As DataSet = New DataSet
  35:          If (ds.HasChanges(DataRowState.Added)) Then
  36:             'Menambahkan Record Yang Ditambahkan
  37:             dschange = ds.GetChanges(DataRowState.Added)
  38:             Dim rowchange As Integer
  39:             rowchange = adapter.Update(dschange, "anggota")
  40:             If (rowchange > 0) Then
  41:                 MessageBox.Show(rowchange.ToString() & " Record Berhasil Dimasukan")
  42:             End If
  43:         End If
  44:         'Pengubahan Data
  45:         If (ds.HasChanges(DataRowState.Modified)) Then
  46:             dschange = ds.GetChanges(DataRowState.Modified)
  47:             Dim Rowchange As Integer
  48:             Rowchange = adapter.Update(dschange, "anggota")
  49:             If (Rowchange > 0) Then
  50:                 MessageBox.Show(Rowchange.ToString() & " Record Berhasil diubah")
  51:             End If
  52:         End If
  53:         'Penghapusan Data
  54:         If (ds.HasChanges(DataRowState.Deleted)) Then
  55:             dschange = ds.GetChanges(DataRowState.Deleted)
  56:             Dim Rowchange As Integer
  57:             Rowchange = adapter.Update(dschange, "anggota")
  58:             If (Rowchange > 0) Then
  59:                 MessageBox.Show(Rowchange.ToString() & " Record Berhasil dihapus")
  60:             End If
  61:         End If
  62:         'Menerapkan perubahan
  63:         ds.AcceptChanges()
  64:         'Refress Datagrid
  65:         DataGridView1.Refresh()
  66:     End Sub
  67: End Class

Agar proses modifikasi dapat dilakukan dengan praktris, kita memerlukan objek Mysql Command Builder. Fungsinya untuk mrndapatkan data yang singkron antara dataset dengan data di dalam data aslinya. Pada prinsipnya operasi penambahan , operasi pengubahan ,operasi penghapusan hampir sama ,hanya status operasi yang membedakan. Perhatikan potongan kode penambahan berikut :


   1: Dim dschange As DataSet = New DataSet
   2: If (ds.HasChanges(DataRowState.Added)) Then
   3:    'Menambahkan Record Yang Ditambahkan
   4:     dschange = ds.GetChanges(DataRowState.Added)
   5:     Dim rowchange As Integer
   6:     rowchange = adapter.Update(dschange, "anggota")
   7:     If (rowchange > 0) Then
   8:         MessageBox.Show(rowchange.ToString() & " Record Berhasil Dimasukan")
   9:     End If
  10: End If

Setelah objek dataset menampung table seperti yang ditampilkan pada DataGridView, kita menciptakan objek dataset baru. Tujuannya untuk menampung record yang ditambah, diubah, serta dihapus dari dataset pertama. Sebagai contoh, Anda melakukan penambahan data, program akan memeriksa penambahan melalui method HasChange dengan parameter status, yaitu DataRowState.Added. Langkah berikutnya mengisikan record baru ke dalam objek dataset kedua, dan terakhir menerapkan perubahan ke tabel melalui method Update. Begitu *** halnya dengan pengubahan dan penghapusan, Anda cukup memeriksa status dari modifikasi data. Setelah status anda dapatkan, langkah selanjutnya tidak berbeda.



Source codenya bisa di download disini

1 Komentar

  1. Anonymous // Tuesday, July 5, 2011 at 11:12:00 PM GMT+7  

    Wah tutorialnya bagus bgt. Mas boleh tanya dikit nga mengenai datagridview. Misalnya saya mau dalam satu cell datagridview ada button.
    ---------------------------
    Nama Alamat
    *
    ---------------------------

    Nah yang * maksudnya button. Jadi waktu saya mau cari nama klien di datagridview pada saat editing maka saya tinggal tekan button tersebut dan cari nama klien yang sesuai....Kira2 gimana mas? tks a lot bantuannya...