Seperti yang sudah kita ketahui, sejak versi 12, PHPMaker selalu menerapkan AJAX untuk field yang menggunakan control Combobox dan berfungsi menampilkan data yang lookup ke table lain. Konsekuensinya, ada kode di server event Row_Rendered yang tadinya berfungsi untuk menghapus pilihan pertama yang bertuliskan Please Select, sekarang menjadi tidak dapat digunakan lagi di versi 12. Semua karena AJAX, hehe…
Sekedar informasi, di versi 11 dan sebelumnya, kita dapat menghapus option Please Select tersebut hanya dengan menggunakan kode berikut di server event Row_Rendered:
array_shift($this->NamaField->EditValue); // sesuaikan "NamaField" dengan nama field yang sebenarnya
Meskipun begitu, bukan PHPMaker namanya jika Web Developer tidak dapat menghapus pilihan pertama di Combobox tadi. Sekalipun kita tidak bisa lagi menggunakan server event Row_Rendered, kita bisa menggunakan fitur Client Scripts dari dalam project PHPMaker.
Cukup hanya dengan menaruh kode jQuery berikut; yang kita letakkan di lokasi Client Scripts -> Global -> Pages with header/footer -> Client Script:
$(document).on("updatedone", function(e, args) { var el = args.target; if (el.options && el.type == "select-one" && el.options.length == 2 ) { // && !el.options[1].selected el.options[1].selected = true; el.options[0] = null; } });
Dari kode barusan, sistem akan menjalankan kode saat event updatedone jQuery hanya untuk control yang tipe-nya select-one yang dalam hal ini adalah control Combobox, dan jika jumlah pilihan di dalamnya hanya 2. Pilihan pertama tentu saja Please Select, sedangkan pilihan kedua adalah satu-satunya Record pilihan yang ada di Combobox tersebut.
Jadi, pilihan yang kedua (indeks ke-1) yang akan otomatis terpilih, sedangkan pilihan pertama (indeks ke-0) yang dihapus. Itu artinya, karena hanya satu saja pilihan Record yang ada di control Combobox tersebut, maka akan lebih masuk akal jika seharusnya kita menghapus pilihan pertama yang bertuliskan Please Select tersebut.
Perlu diketahui, bahwa karena kode itu kita letakkan dalam scope Global, maka semua field yang menggunakan Combobox dan memenuhi persyaratan di atas tadi akan terkena dampaknya.
Selain itu, pastikan field yang bertalian bukan merupakan field child dari fitur Dynamic Selection List, karena jika iya, maka kode di atas akan mengeluarkan hasil yang tidak diharapkan.
Betapa mudah, cepat, dan menyenangkan sekali bukan? 😀
SURYA mengatakan
Bang saya udah coba bisa, namun kenapa tidak semua Combobox hilang Please select nya yah, saya punya kurang lebih 8 ComboBox, mohon pencerahannya
Masino Sinaga mengatakan
Coba dibaca ulang sekali lagi artikel di atas dengan lebih teliti. Di sana ada beberapa hal yang menyebabkan pilihan Please Select tidak bisa dihilangkan, termasuk syarat apa saja yang harus dipenuhi supaya pilihan tersebut bisa dihilangkan.
Surya mengatakan
Baik bang sudah bisa makasih, namun masih penasaran,bagaimana bila data yang ingin di tampilkan pada TextBox, dengan perintah di atas kok ga bisa yah
Masino Sinaga mengatakan
Gimana kalau pertanyaannya saya balik. Di TextBox ada pilihan Please Select gak? 🙂
singgih saputro mengatakan
bang kalau mau ambil value select option dengan javascript caranya gimana?
Masino Sinaga mengatakan
Googling aja dek. 🙂 😛