Masih ingat dengan server event Row_Updating? Sekedar untuk menyegarkan memori Anda, server event tersebut memungkinkan Web Developer dapat menambahkan kode yang berisi validasi untuk setiap Record yang sedang diperbarui dalam sebuah Aplikasi Web yang dihasilkan oleh PHPMaker, sebelum disimpan ke Database. Nah, di PHPMaker 11 mulai diperkenalkan server event baru yang mirip dengan itu. Namanya adalah Grid_Updating.
Server event Grid_Updating menggunakan fitur Grid-Edit untuk sebuah Table, sedangkan untuk yang melibatkan Table Detail, maka menggunakan fitur Master/Detail-Edit. Server event ini akan dipanggil sebelum memperbarui beberapa Record sekaligus. Argumen dari server event ini hanya satu, yaitu $rsold yang merupakan array dari Record-record yang akan diperbarui (yang diambil dari Database).
Sebagai Web Developer, Anda dapat menggunakan server event ini untuk memeriksa semua Record yang akan diperbarui. Jika Anda ingin membatalkan proses pembaruan, maka cukup kembalikan nilai FALSE. Sebaliknya, kembalikan nilai TRUE. Secara standar, server event Grid_Updating akan mengembalikan nilai TRUE.
Server event Grid_Updating akan dijalankan sebelum server event Row_Updating dieksekusi, sehingga nilai Field pada saat itu belum dimuat, tapi Anda dapat memuatnya dengan cara Anda sendiri.
Perlu diingat bahwa jika Anda hanya ingin memeriksa Record secara individu, tidak perlu menggunakan server event ini, tapi cukup gunakan server event Row_Updating yang akan dipanggil untuk setiap baris di Grid.
Contoh, kita akan memeriksa semua Record yang terdapat dalam sebuah Grid sebelum diperbarui, maka kode selengkapnya adalah sebagai berikut:
function Grid_Updating($rsold) { $rsnew = $this->GetGridFormValues(); // Dapatkan nilai form sebagai sebuah array dari array //var_dump($rsnew); die(); // Untuk memeriksa records dan mengakhiri skrip $oldtotal = 0; foreach ($rsold as $row) // Telusuri record-record yang lama $oldtotal += intval($row["Subtotal"]); $newtotal = 0; foreach ($rsnew as $row) // Telusuri record-record yang baru $newtotal += intval($row["Subtotal"]); if ($newtotal < $oldtotal) { // Untuk membatalkan, kembalikan nilai False $this->CancelMessage = "Nilai Total yang baru harus lebih besar dari nilai total yang lama."; return FALSE; } return TRUE; }
Duh, keren dan nikmat sekali, bukan? 🙂
Tinggalkan Balasan