Masih ingat dengan tulisan saya berjudul Mudahnya Menyembunyikan Tombol Tambah di Halaman List dari PHPMaker?
Sekedar mengingatkan saja, artikel itu membahas betapa mudahnya kita menyembunyikan tombol Add yang terdapat di luar tabel pada halaman List. Biasanya kita melakukan ini untuk mencegah Pengguna menambah data Master secara tunggal, tanpa disertai penambahan data Detail sekaligus pada halaman Master/Detail.
Ternyata, suatu ketika kita juga harus menyembunyikan tombol Add Master/Detail yang di artikel tadi masih bisa terlihat. Tujuannya, supaya Pengguna juga tidak dapat menambah data Master/Detail (Master/Detail Add), tapi mereka hanya bisa mengubah data Master/Detail saja (Master/Detail Edit).
Solusinya hampir sama dengan solusi pada artikel tadi. Cukup dengan menambahkan dua baris kode PHP saja ke dalam server event Page_Render milik tabel Master. Server event ini terdapat di bawah lokasi Server Events -> Table-Specific -> List Page, sehingga kode selengkapnya terlihat seperti ini:
// Page Render event function Page_Render() { //echo "Page Render"; $this->OtherOptions['detail'] = new cListOptions(); $this->OtherOptions['detail']->Body = ""; }
Perhatikanlah bahwa dalam hal ini kita hanya menggunakan property detail milik object OtherOptions. Bandingkan dengan solusi pada artikel di atas tadi, kita menggunakan property addedit milik object yang sama.
Mudah dan cepat sekali, ya? 😀
Cak Sobri mengatakan
Kalo menyembunyikan di halaman view gimana om ?
Masino Sinaga mengatakan
Di halaman View milik record Master tidak ada tombol Add Master/Detail. Yang ada tombol Master/Detail Copy, apakah itu yang Anda maksud?
ari stya mengatakan
cara menambahkan total di detail bagaimana ya, jadi misal ketika invoice di detail di tambahkan maka automatic melakukan summary
Masino Sinaga mengatakan
Pendekatannya ada dua, pertama dari sisi server dan kedua dari sisi client.
Untuk di sisi server, Anda bisa menggunakan server event Row_Inserting milik tabel detail untuk menghitung ulang nilai total berdasarkan data yang baru saja disimpan.
Untuk di sisi client, Anda bisa mengoptimalkan jQuery di bagian Client Scripts -> Table-Specific -> Add/Copy Page -> Startup Script milik tabel detail. Ambil terlebih dulu nilai total awal, lalu pada saat event penambahan record detail, hitung ulang nilai total berdasarkan akumulasi total awal dengan nilai detail yang sedang ditambahkan.
Septian mengatakan
kalo menyembunyikan tombol details pada setiap row nya gimana ya mas?
Masino Sinaga mengatakan
Cek id element-nya dari View Page Source browser-nya, lalu gunakan kode jQuery dari bagian Startup Script di bawah Client Scripts project PHPMaker untuk menyembunyikannya berdasarkan id element tadi.
Septian mengatakan
sippp thnks pak 🙂
Septian mengatakan
bagaimana caranya jika element yg ingin kita sembunyikan itu berupa class bukan id?
Masino Sinaga mengatakan
Hampir sama dengan id tadi. Bedanya kalau id diawali karakter #, sedangkan kalau class, namanya diawali dengan karakter titik (.)