Skip to content


Create, Update dan Delete Data Master Dengan Ajax Dan Dynamic Grid

KurangBiasaLumayanBagusLuar Biasa (5 votes, average: 5.00 out of 5)
Loading ... Loading ...
534 views

Berawal dari banyak request untuk pengembangan artikel sebelumnya tentang “Create, Update dan Delete Data Master Dengan Ajax” maka saya coba kembangkan form CRUD dengan metoda table dinamis (Dynamic Grid), maksudnya adalah semua kegiatan tambah, ubah dan menghapus dapat dilakukan pada table yang menampilkan data.

Masih mengambil topik managemen data pegawai, saya coba kembangkan script lama saya sehingga tampilannya seperti ini.


Tampilan saat menambah data


Tampilan saat mengubah data

Apabila semua dilakukan pada table, maka plugin Thickbox tidak diperlukan lagi, dan file “form.php” yang digunakan sebelumnya untuk tampilan popup tambah dan edit data juga tidak diperlukan.

Lalu yang harus ditambahkan adalah seperti berikut.

  1. Dengan dynamic grid, anda setidaknya ‘dipaksa’ mengeluarkan semua field yang dibutuhkan untuk mengedit dan menambah data, pada kali ini, field alamat yang tidak ditampilkan pada artikel sebelumnya harus saya tampilkan di table data.
  2. Karena table “master_pegawai” dan “master_department” saling terhubung maka field penghubung itu juga harus ditampilkan agar bisa diedit. Oleh karena itu setiap baris data ditambahkan inputan hidden “dept_id” untuk menyimpan ID dari “master_department” di table “master_pegawai“.
  3. Perlu ditambah fungsi-fungsi untuk menempatkan form pada grid ketika menambah data atau mengubah data. Anda bisa lihat di bawah ini.
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
/* variable "editState" akan digunakan sebagai penanda bahwa ada data yang sedang diedit 
   jadi user tidak bisa menekan tombol edit pada masing-masing baris atau menambah data
   apabila form edit sedang ditampilkan */
var editState = false 
function newData(){
if(!editState){
	$('#tableFoot').show();
}else{
	alert('Tidak bisa menambah baris ketika mengedit baris');
}
}
function editData(ID){
if(!editState){
   var element = '#tr'+ID; // ambil ID dari baris yang ingin diubah
   // isi dari form disisipkan di posisi setelah baris element yang ingin diedit
   $($('#tableFoot').html()).insertAfter(element); 
   // kosongkan form tambah data agar tidak terjadi redudansi data yang dikirimkan
   $('#tableFoot').empty(); 
   $('input[@name=ID]').val(ID); // masukan ID dari record yang ingin diedit di form ID
   $('input[@name=NIP]').val($(element+' td:nth-child(2)').text()); // isi inputan NIP diambil dari kolom kedua pada baris yang ingin diedit
   $('input[@name=Name]').val($(element+' td:nth-child(3)').text());  // isi inputan Nama diambil dari kolom ketiga pada baris yang ingin diedit, dst
   $('textarea[@name=Address]').val($(element+' td:nth-child(4)').text()); 
 
   $('select[name=Department] option[value='+$('#dept_id'+ID).val()+']').attr('selected',true);
   $(element).hide(); // sembunyikan baris data yang ingin diedit
   editState = true; // set aplikasi ke keadaan sedang mengedit suatu baris
}else{
   alert('Anda sedang melakukan edit data, tekan button cancel sebelum melakukan edit pada baris ini');
}
}
function cancelForm(){
// action cancel pada saat mengedit beda perlakuannya dengan pada saat menambah data
if(editState){ 
	var element = $('#tr'+$('input[@name=ID]').val());
 
   /* ketika mengedit data, baris ini di sembunyikan dan diganti oleh form ubah data 
	  oleh karena itu sebelum mengubah isi dari kolom data di baris ini, anda harus
	  menampilkan kembali baris tsb dan menghapus baris form data */
	element.show(); 
	var html = '<tr>'+element.next().html()+'</tr>';
	$('#tableFoot').html(html); // form pada bagian bawah diisi lagi kode HTML-nya dari form edit
	element.next().remove();
	editState = false;
}else{
	$('#tableFoot').hide();
}
$('input[@name=ID]').val('');
$('input[@name=NIP]').val('');
$('input[@name=Name]').val('');
$('textarea[@name=Address]').val('');
$('select[name=Department] option').removeAttr('selected');
}

Berikut adalah demo dari program ini. DEMO

Berikut adalah link download program ini. DOWNLOAD

Semoga bermanfaat… ^_^

Posted in JQuery, PHP, Tips & Trick. Tagged with , , , , , .

4 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. mantap ten…sedot ilmu.
    trus update lagi lah blog na

  2. idar said

    Bagus…makasih aku unduh ya

  3. LUAR BIASA
    TOB MARKOTOB
    INI YANG AKU CARI
    TQ BERAT GAN ^____^

  4. ini yang saya cari mas!! terima kasih , ditunggu postingan yang lain m,as

Some HTML is OK

(required)

(required, but never shared)

or, reply to this post via trackback.