Apakah Anda sebagai Web Developer pernah mengalami kesulitan ketika akan menambahkan kolom khusus yang berisi data yang bisa dikostumisasi sesuai dengan business-logic tertentu? Yang saya maksudkan kolom khusus adalah kolom tambahan yang bisa disisipkan pada tabel yang terdapat di halaman List. Kolom ini mengandung data yang nilainya bisa ditentukan dengan mengoptimalkan event Render saat data di tabel ditampilkan ke browser.
Selain itu, apakah Anda juga pernah mengalami kesulitan ketika akan menjumlahkan nilai yang terdapat di setiap baris pada kolom baru tersebut? Artinya, Anda ingin mengetahui Total dari nilai yang terdapat di kolom yang baru tadi. Masih bingung maksudnya? Kalau begitu simak contoh kasus di bawah ini!
Katakanlah kita akan menambah sebuah kolom baru dengan tulisan di judul kolomnya bernama Kolom Baru, lalu mengisi nilai di setiap baris pada kolom ini dengan data yang berasal dari field Nilai yang terdapat di tabel tersebut. Di bagian paling bawah sebelum Footer, kita akan menampilkan jumlah total dari nilai yang terdapat di setiap baris pada kolom baru tadi.
PHPMaker sudah menyediakan dua server event yang secara prinsip dapat menambahkan kolom baru dan mengisi kolom baru tadi dengan data tertentu. Kedua server event itu masing-masing bernama ListOptions_Load dan ListOptions_Rendered. Dari kedua namanya saja, seharusnya kita sudah bisa mengetahui fungsinya. Server event pertama akan dieksekusi ketika sistem memuat menu atau pilihan-pilihan yang terdapat di sebuah tabel pada halaman List. Sedangkan server event kedua akan dieksekusi ketika sistem melakukan Render (menampilkan output) ke dalam tabel pada halaman List.
Sedangkan untuk menampilkan data Total dari penjumlahan semua nilai yang terdapat di setiap baris pada kolom baru tadi, kita akan mengoptimalkan server event Page_DataRendered. Sayangnya, sampai dengan PHPMaker versi 11, belum disediakan server event untuk menaruh data di baris paling bawah yang biasanya menampilkan data agregasi seperti SUM, COUNT, atau AVG. Itulah mengapa akhirnya kita menggunakan server event Page_DataRendered yang akan menampilkan teks sebelum bagian Footer dipanggil.
Ini kode di server ListOptions_Load untuk membuat kolom baru dan menampilkan teks di bagian judul kolom baru:
// ListOptions Load event function ListOptions_Load() { // Example: $item = &$this->ListOptions->Add("kolom_baru"); // Tambahkan kolom baru, dengan kata kunci: "kolom_baru" $item->Header = "Kolom Baru"; // Tentukan judul header kolom (untuk halaman List) $item->OnLeft = FALSE; // Posisi kolom baru berada paling kanan $item->MoveTo(-5); // Geser kolom ke kiri sebanyak 5 kali }
Ini kode di server event ListOptions_Rendered untuk mengisi dan menampilkan data di setiap baris pada kolom baru tersebut:
// ListOptions Rendered event function ListOptions_Rendered() { // Example: global $iTotal; $this->ListOptions->Items["kolom_baru"]->Body = $this->Nilai->CurrentValue; // Ambil data dari field Nilai $iTotal += ($this->ListOptions->Items["kolom_baru"]->Body); // Jumlahkan baris per baris, tampung ke $iTotal }
Ini kode di server event Page_DataRendered untuk menampilkan nilai dari Total data di kolom baru tersebut:
// Page Data Rendered event function Page_DataRendered(&$footer) { // Example: //$footer = "your footer"; global $iTotal; $footer = $iTotal; }
Mudah sekali, bukan? ๐
herman mengatakan
Siang Pak
jika isi dari baris ingin sy ganti menjadi tombol berisi link ke halaman lain
misal link ke halaman_baru.php
baris
sy rubah menjadi apa Pak?
terima kasih
Masino Sinaga mengatakan
Ubah kira-kira menjadi seperti ini:
Cak Sobri mengatakan
Kenapa di saya totalnya tidak valid ya om ?
Cak Sobri mengatakan
Ternyata tag {{{field}}} ini bisa digunakan di CustomeTemplateFooter ๐
alfa mengatakan
Cara mengecilkan kolom view giman ya pak tombol add. Tq
Masino Sinaga mengatakan
Maaf, saya males menjawab pertanyaan yang kalimatnya amburadul!
alfa mengatakan
Maaf pak masino sinaga…..
Cara mengecilkan kolom view setelah tombol add Diklik gimn carnya ya….mohon bantuanya…..trima kasih
Masino Sinaga mengatakan
Masih belum jelas maksudnya mau seperti apa?
alfa mengatakan
Maksud sya kolom girdadd pak….maaf kurang jelas sy beri infonya
Masino Sinaga mengatakan
Periksa id atau class atau apapun itu penanda dari kolom yang ingin Anda sesuaikan lebar kolomnya. Gunakan kode jQuery pada bagian Client Scripts di project PHPMaker untuk mengeset nilai lebar kolom tersebut. Google bila perlu untuk contoh2 kode jQuery tersebut.
Baca topik Server Events and Client Scripts dari menu Help PHPMaker untuk info lebih lanjut.
Indra Dwi Budi Rahadian mengatakan
Maaf Pak Masino, kok disaya tidak tampil ya ?
Masino Sinaga mengatakan
Tambahkan kode ini ke dalam server event Page_Rendering:
akabr mengatakan
pak kok ga bisa ke kanan ya isi dari kolomya kok masih rata kiri
Masino Sinaga mengatakan
Tinggal atur dari Fields setup -> panel View Tag -> DIV Tag Attributes , pilih right dari Align, lalu generate ulang semua file script dari PHPMaker seperti biasa.
Ahmad Hidayat mengatakan
Saya menggunakan php2020 ketika menambahkan kolom baru dan ingin link ke aplikasi lain, muncul tampilan : Parse error: syntax error, unexpected ‘function’ (T_FUNCTION) …. Mohon pencerahan skrip untuk dapat linknya Mas.
Ahmad Hidayat mengatakan
Terima kasih, Mas masalah syntax error, unexpected โfunctionโ (T_FUNCTION) sudah teratasi.