Sebagai Web Developer, Anda pasti pernah atau bahkan sering menangani pembuatan halaman Master/Detail di Aplikasi Web yang Anda bangun. Baik itu untuk mengelola (tambah atau ubah) data, maupun untuk menampilkan atau membatasi elemen yang terkait dengan fungsi-fungsi tadi. Semuanya pasti saling terkait erat, dan fungsi-fungsi tadi harus bisa terintegrasi dalam fitur Master/Detail.
Beruntung sekalilah Anda jika menggunakan PHPMaker, karena Anda dapat mengimplementasikannya dengan sangat mudah dan cepat. PHPMaker memberikan banyak sekali kemudahan kepada Web Developer untuk membuat fungsi-fungsi yang terkait dengan Master/Detail.
Di antaranya, satu tabel master dapat mengelola dan juga menampilkan beberapa (lebih dari satu) tabel detail sekaligus, seperti pada artikel Seberapa Efektif Anda Mengelola Data Master/Detail dan Master/Multi-Detail?. Juga betapa mudahnya mengambil nilai dari bagian Master untuk ditampilkan pada bagian Detail pada sebuah halaman Master/Detail seperti pada artikel Mengambil Data Master untuk Ditampilkan di Tabel Detail pada Halaman Master/Detail.
Pada artikel ini, kita akan membahas satu lagi kemudahan yang diberikan oleh PHPMaker kepada Web Developer ketika mengimplementasikan Master/Detail di Aplikasi Web. Lebih tepatnya, kita akan membahas bagaimana mudahnya menyembunyikan elemen atau fungsi tertentu di halaman Detail jika ketika ditampilkan tidak bersamaan dengan halaman Master-nya.
Seperti yang kita ketahui, tidak semua fungsi di halaman Detail dapat digunakan oleh Pengguna jika halaman tersebut tidak sedang ditampilkan bersama dengan halaman Master-nya.
Katakanlah pada menu/halaman orderdetails yang merupakan Detail dari halaman orders (Master) sedang diakses Pengguna, maka fungsi atau tombol/link Add di halaman orderdetails tadi tidak boleh dilihat/digunakan oleh Pengguna. Harus disembunyikan.
Sebaliknya, jika kedua halaman tadi sedang menyatu dalam mode Master/Detail antara orders sebagai Master dan orderdetails sebagai Detail sedang diakses oleh Pengguna, maka barulah fungsi atau tombol/link Add di bagian Detail tadi bisa kelihatan sehingga bisa digunakan oleh Pengguna.
Bagi Web Developer yang pernah atau ingin mengimplementasikan business-logic seperti ini pasti sudah paham dengan apa yang saya maksud di atas tadi. Tapi bagi Anda Web Developer pemula yang baru mengetahui hal ini, maka perlu saya beritahukan alasan mengapa fitur tadi sering dibutuhkan. Pertama, untuk menuntun Pengguna dalam mengelola (tambah atau ubah) data Detail agar selalu mengacu kepada data Master yang sudah ada. Kedua, untuk mencegah Pengguna berpikir terlalu dalam ketika mengelola data yang terkait dengan Master/Detail. Dengan kata lain, kedua alasan itu semata-mata untuk mencegah Pengguna menginput data Master yang tidak valid di bagian Detail.
Nah, pertanyaannya adalah, bagaimana cara kita untuk menyembunyikan tombol Add di bagian atau halaman Detail ketika tidak sedang terkait dengan data Master-nya? Jangan khawatir! Solusinya sangatlah mudah, cepat, dan lagi-lagi menyenangkan! Ternyata PHPMaker sudah menuntun Web Developer untuk mengatasi hal ini melalui server event yang bernama Page_Render. Anda cukup hanya menaruh kode ini ke dalam server event tadi, sehingga kode selengkapnya adalah seperti ini:
// Page Render event function Page_Render() { //echo "Page Render"; $is_master_table = CurrentMasterTable(); if(@$is_master_table == NULL){ $this->OtherOptions["addedit"]->Items["add"]->Visible = FALSE; } }
Perhatikanlah kode tersebut. PHPMaker sudah menyediakan sebuah fungsi global bernama CurrentMasterTable yang akan mengembalikan nilai NULL jika tabel master tidak berhasil dideteksi di halaman atau bagian Detail. Jadi, kita menaruh kode tadi di server event Page_Render pada halaman List milik tabel Detail.
Sistem akan memeriksa jika fungsi global tadi mengembalikan NULL, maka kita cukup mengeset property Visible milik item add yang berada di bawah grup addedit dari property OtherOptions menjadi FALSE.
Setelah Anda men-generate ulang file script dengan PHPMaker, cobalah untuk mengakses halaman Detail, maka seharusnya fungsi tombol atau link Add yang berada di bagian atas dan atau bawah tabel di halaman List menjadi disembunyikan. Lalu, cobalah juga untuk mengakses halaman Detail tersebut dari mode Master/Detail, maka seharusnya fungsi tombol atau link Add tadi menjadi kelihatan kembali.
Wow, betapa mudah sekali ya? PHPMaker memang keren abiiiizzzz! 😀
Hamsah mengatakan
Berbicara soal tombol add apakah ada cara agar tombol add yang berada di pojok kiri bawah kolom bisa dipindahkan ke bagian atas atau area lainnya soalnya selama ini tombol add jika saya menggunakan 20 record per page tidak akan efisien karena pengguna harus menscroll ke bawah halaman untuk meng-add record baru….
oh iya satu lagu master mungkin kedengarannya aneh tapi apakah mungkin saya menggunakan text hyperlink saja daripada menggunakan tombol view pada list page ( seperti phpmaker sebelum menggunakan bootstrap, view hanya berupa text hyperlink bukan tombol)
Terima Kasih sebelumnya
Masino Sinaga mengatakan
Tentu bisa. Tinggal aktifkan saja pengaturan Paging section at top dari menu PHP -> Page Options (Global) di PHPMaker.
Penggunaan text hyperlink bisa saja daripada menggunakan style tombol, tapi icon Bootstrap-nya untuk fungsi Add, Edit, View, Search, dsb tetap akan diikutkan. Pastikan Anda tidak mengaktifkan pengaturan Use buttons as links dari lokasi menu yang sama di atas tadi.
Hamsah mengatakan
oh iya maksud saya icon bootstrapnya di ganti hyperlink… tapi gpp… no biggy.. thanks..
dan terimakasih paging sectionnya dah nemu… emang top… master masino…
Terima kasih sekali lagi…
Masino Sinaga mengatakan
Sama-sama. 🙂
hendra mengatakan
Di ORDERDETIL, saya menyediakan tombol INLINE EDIT.
Saya mau itu visible hanya jika field status di table MASTER adalah OPEN.
Jika field status berisi CLOSE, maka tombol INLINE EDIT invisible.
Saya bingung membaca isi field dari table MASTER, padahal page_rendernya di detil
hendra mengatakan
sudah nemu dari posting “Mengambil Data Master untuk Ditampilkan di Tabel Detail pada Halaman Master/Detail”
saya ingin menyembunyikan Inline edit table detil dengan code berikut, kok error ya 🙂
if ($GLOBALS[‘PreSOMst’]->cStatus->CurrentValue==”R”)
$this->OtherOptions[“addedit”]->Items[“edit”]->Visible = FALSE;
Apa yang salah ?
hendra mengatakan
saya coding di ListOptions_Rendered
$this->ListOptions->Items[“edit”]->Body = “”;
sudah bisa, apakah solusi ini benar
hendra mengatakan
atau bisa pakai ini ya ? Visible =FALSE;
Masino Sinaga mengatakan
Hehe, nanya sendiri, langsung dijawab sendiri. 😉
Ya dicoba saja mas… kalau bisa ya berarti boleh memakai cara di atas tadi, hehe… 🙂
hendra mengatakan
h h h…Saat dapat masalah, tanya masternya, sambil saya cari solusinya sendiri.
Akhirnya ketemu, jadinya ya tanya & jawab sendiri 🙂
Masino Sinaga mengatakan
Kalau begitu, lain kali berusaha sendiri dulu sebelum ingin langsung bertanya.
Kan pengalaman sudah membuktikan, jika mencoba dulu sendiri biasanya akan berhasil. 🙂
Charly mengatakan
Mat Siang Bang Masino,
Mohon bantuannya, jika ingin menghilangkan tombol add tapi berdasarkan data pada List Tabel. Jika belum ada data, tombol Add akan muncul, tapi pada saat sudah ada data di List Tabel, otomatis tombol Add nya akan hilang.
Masino Sinaga mengatakan
Selamat siang Charly. Boleh tahu pakai PHPMaker versi berapa?
Masino Sinaga mengatakan
Artikel ini sepertinya bisa membantu: Mudahnya Menyembunyikan Tombol Tambah di Halaman List dari PHPMaker.
Anda tinggal menambahkan pemeriksaan kondisi apakah di table tersebut sudah ada record di dalamnya dengan menggunakan global function yang bernama ExecuteScalar(). Info lebih lanjut, silahkan lihat sub-topik Some Global Functions di bawah topik Server Events and Client Scripts.