Pernahkah Anda menggunakan server event Page_Load dan/atau Page_DataRendering di Halaman List pada Aplikasi Web yang dihasilkan oleh PHPMaker? Jika ya, apakah Anda pernah mengamati ada perbedaan yang cukup signifikan di antara keduanya? Mengapa saya bertanya demikian, supaya kita bisa mengoptimalkan kedua server event ini sesuai dengan tujuan dari business-logic yang kita harapkan.
Jika mengacu kepada menu Help di PHPMaker, maka server event Page_Load memiliki penjelasan seperti ini:
This event will be called after connecting to the database.
Artinya adalah, server event Page_Load akan dipanggil setelah sistem berhasil menghubungi database. Maksudnya, setiap kali halaman List berhasil menghubungi database, maka kode yang terdapat di dalam server event ini akan dijalankan.
Kalau melihat kode aslinya, maka tidak ada yang terlalu istimewa di sana:
// Page Load event function Page_Load() { //echo "Page Load"; }
Kita hanya cukup menaruh kode PHP di dalam function tersebut. Biasanya, server event ini sering digunakan untuk memanipulasi tampilan sebuah Field di halaman List. Contoh, di halaman orderdetailslist.php, kita tidak ingin menampilkan field ProductID, maka kode di atas menjadi:
// Page Load event function Page_Load() { //echo "Page Load"; $this->ProductID->Visible = FALSE; }
Cukup sederhana kode-nya bukan? Sekalipun kode-nya hanya begitu saja, maka hasilnya akan menyembunyikan semua field ProductID, baik yang terdapat di dalam Tabel pada halaman List tersebut, maupun di bagian Extended Search yang letaknya di bagian atas dari Tabel di halaman List tadi.
Sekarang mari kita membahas server event Page_DataRendering. Menurut menu Help di PHPMaker, server event ini memiliki penjelasan seperti berikut:
This event will be called after the header.php is included. You can use this event to add content at the top of page content.
Artinya, server event Page_DataRendering akan dipanggil setelah file header.php disertakan di halaman List. Anda dapat menggunakan event ini untuk menambahkan konten di bagian atas dari konten halaman (yang dalam hal ini datanya sering ditampilkan dalam bentuk tabel).
Kalau kita melihat kode standarnya, maka seperti ini:
// Page Data Rendering event function Page_DataRendering(&$header) { // Example: //$header = "your header"; }
Nah, kode di server event Page_DataRendering menyertakan sebuah parameter berupa variabel $header. Jadi, jika kita ingin menampilkan data sesuai keinginan kita di bagian atas dari konten utama di halaman List, maka kita cukup mengisi nilai variabel tersebut, contoh:
// Page Data Rendering event function Page_DataRendering(&$header) { // Example: $header = "Ini dataku, berada di bagian atas dari konten utama."; }
Output dari server event Page_DataRendering akan menampilkan tulisan Ini dataku, berada di bagian atas dari konten utama. Inilah fungsi utama dari server event tersebut. Sampai di sini kita belum melihat keterkaitan antara kedua server event di atas (Page_Load dan Page_DataRendering).
Jika kita kembali lagi ke kode di server event Page_Load di contoh atas tadi, maka barulah ada keterkaitan antara keduanya. Dalam hal ini, kita ingin menyembunyikan Field tertentu di halaman List.
Seperti yang tadi sudah saya sebutkan, jika kita ingin menyembunyikan field tertentu yang terdapat dalam halaman List (tidak peduli apakah itu di bagian Tabel maupun di bagian Extended Search), maka kita hanya cukup menaruh kode seperti ini di server event Page_Load:
$this->ProductID->Visible = FALSE;
Pertanyaan selanjutnya adalah, lalu bagaimana jika seandainya kita hanya ingin menyembunyikan field ProductID tersebut di bagian Tabel, tapi tetap menampilkannya di bagian Extended Search? Ahaaa! Sudah tahu arahnya kemana? Betul! Jawabannya adalah, maka kita tidak perlu menaruh kode barusan di server event Page_Load, tapi cukup pindahkan kode barusan ke dalam server event Page_DataRendering, sehingga menjadi seperti ini:
// Page Data Rendering event function Page_DataRendering(&$header) { $this->ProductID->Visible = FALSE; }
sedangkan kode di server event Page_Load menjadi seperti semula:
// Page Load event function Page_Load() { //echo "Page Load"; }
Jadi, kesimpulan dari artikel ini adalah, jika kita ingin menyembunyikan field tertentu di bagian Tabel pada halaman List, tapi menampilkan field tersebut di bagian Extended Search, maka gunakan server event Page_DataRendering, dan jangan menggunakan server event Page_Load untuk menyembunyikan field yang bertalian.
See? Betapa PHPMaker ternyata sudah mengantisipasi kemungkinan-kemungkinan yang sekecil dan sedetail ini. Betapa mudah dan fleksibelnya bukan? 😀
Jausyankabir mengatakan
Kalau ingin me ReadOnly lebih daru satu field gimana caranya. Kalau satu. field :
function Page Load () {
$this->Nama_Anak->ReadOnly = True
Terima kasih.
Masino Sinaga mengatakan
Sudah dijawab di forum diskusi PHPMaker.