Salah satu fitur canggih di Aplikasi Web yang dihasilkan oleh PHPMaker adalah adanya kemampuan untuk mengelompokkan link yang berisi menu untuk menampilkan aksi-aksi terhadap setiap Record pada halaman List. Aksi-aksi tersebut di antaranya untuk melakukan: view (menampilkan detail sebuah Record), edit (mengubah data dari sebuah Record), dan copy (menyalin data dari sebuah Record), serta menampilkan menu yang berisi data detail yang dimiliki oleh sebuah Record.
PHPMaker menempatkan pilihan aksi-aksi tadi ke dalam sebuah object yang bernama ListOptions. Object ini merupakan hasil instansiasi dari class cListOptions. Dengan cara ini, maka Web Developer menjadi diberi kesempatan yang sangat luas untuk bermain-main dengan property milik object ListOptions tersebut.
Contoh, untuk mengelompokkan tombol-tombol yang tergabung dalam aksi view, edit, dan copy tadi, tapi tidak menggabungkannya ke dalam tombol yang bertipe dropdown untuk sebuah Table di project PHPMaker Anda, maka kita cukup menggunakan kode berikut dalam server event Page_Render yang terdapat di halaman List:
// Page Render event function Page_Render() { //echo "Page Render"; $this->ListOptions->UseButtonGroup = TRUE; $this->ListOptions->UseDropDownButton = FALSE; }
dengan catatan, sebelum men-generate kode dari PHPMaker, kita sudah mengaktifkan pengaturan Use buttons as links dan Use button dropdown for links yang terdapat di bawah menu PHP -> Page Options (Global). Hal ini penting, karena pengaturan ini terkait dengan kode yang akan dibangkitkan oleh PHPMaker untuk semua halaman.
Sedangkan kode di server event Page_Render tadi gunanya untuk meng-override pengaturan global yang sebelumnya sudah dibangkitkan oleh PHPMaker. Jadi, dalam hal ini kita bisa tidak menggunakan pengaturan global, dengan cara menambahkan kode pada server event Page_Render tersebut.
Mungkin Anda bertanya, mengapa tidak ditaruh di server event Row_Rendered atau ListOptions_Rendered saja? Jawabannya karena kode tersebut hanya untuk mengeset property UseButtonGroup dan UseDropDownButton saja, dan server event yang cocok untuk itu adalah Page_Render, karena server event ini akan dijalankan sebelum sistem mengeluarkan output HTML ke browser Pengguna. Anda dapat membuat perubahan pada detik-detik terakhir di sebuah halaman melalui server event Page_Render.
Selain itu, kita sebagai Web Developer juga bisa memanipulasi atau menyembunyikan pilihan menu yang menampilkan data detail dari halaman List. Katakanlah kita ingin menyembunyikan pilihan menu detail pada halaman yang menampilkan daftar pesanan, hanya untuk Record yang memiliki ID Pesanan = 11077:
// ListOptions Rendered event function ListOptions_Rendered() { // Example: //$this->ListOptions->Items["new"]->Body = "xxx"; if ($this->OrderID->CurrentValue == 11077) { $this->ListOptions->Items["details"]->Body = ""; } }
Perhatikan dalam contoh di atas, kita menempatkan kode tersebut di dalam server event ListOptions_Rendered, dan bukan di Row_Rendered. Mengapa? Karena dalam hal ini kita mengakses property milik object ListOptions, dan itu harus dilakukan di dalam server event ListOptions_Rendered.
Dengan cara yang sama barusan, seandainya kita ingin menyembunyikan pilihan menu edit, maka kita dapat menggunakan kode berikut:
// ListOptions Rendered event function ListOptions_Rendered() { // Example: //$this->ListOptions->Items["new"]->Body = "xxx"; if ($this->OrderID->CurrentValue == 11077) { $this->ListOptions->Items["edit"]->Body = ""; } }
Betapa mudah dan cepatnya, bukan? 😀
Sukri mengatakan
dalam data terdapat field bulan dengan isi data 1-12, bagaimana manampilkan view dengan nama (Januari-Desember)
Terima Kasih
Masino Sinaga mengatakan
Aktifkan pilihan control Select atau Combobox dari panel Edit Tag, lalu di panel User Values, definisikan satu per satu nilai 1 s.d. 12 tadi dengan masing-masing nama bulan yang bertalian (Januri s.d. Desember).
Baca topik Field Setup dari menu Help PHPMaker untuk informasi lebih lanjut.
Sukri mengatakan
Terima Kasih Pak
Masino Sinaga mengatakan
Sama-sama.
febri mengatakan
Pak Masino,
saya ingin bertanya, bagaimana caranya menyembunyikan button Master/Detail Edit dan Copy gimana ya caranya?
Masino Sinaga mengatakan
Asumsi menggunakan table orders sebagai table master, dan orderdetails sebagai table detail, maka cukup taruh kode ini di server event ListOptions_Rendering milik table orders:
febri mengatakan
Wah sangat bermanfaat dan berhasil kodenya pak,
terimakasih,
tapi kode tersebut saya taruh di view page untuk menghilangkan master detail button
edit dan copy k tidak bisa ya?
apa caranya berbeda pak?
Masino Sinaga mengatakan
Betul, caranya berbeda antara di halaman List dan halaman View.