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? ๐
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
Ubah kira-kira menjadi seperti ini:
Kenapa di saya totalnya tidak valid ya om ?
Ternyata tag {{{field}}} ini bisa digunakan di CustomeTemplateFooter ๐
Cara mengecilkan kolom view giman ya pak tombol add. Tq
Maaf, saya males menjawab pertanyaan yang kalimatnya amburadul!
Maaf pak masino sinaga…..
Cara mengecilkan kolom view setelah tombol add Diklik gimn carnya ya….mohon bantuanya…..trima kasih
Masih belum jelas maksudnya mau seperti apa?
Maksud sya kolom girdadd pak….maaf kurang jelas sy beri infonya
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.
Maaf Pak Masino, kok disaya tidak tampil ya ?
Tambahkan kode ini ke dalam server event Page_Rendering:
pak kok ga bisa ke kanan ya isi dari kolomya kok masih rata kiri
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.
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.
Terima kasih, Mas masalah syntax error, unexpected โfunctionโ (T_FUNCTION) sudah teratasi.