Kalau di artikel sebelumnya kita sudah membahas bagaimana mudahnya kita sebagai Web Developer menyembunyikan tombol Master/Detail yang terdapat di halaman List dari Record Master, maka di artikel ini kita akan membahas bagaimana mudahnya menyembunyikan beberapa tombol yang terkait dengan fungsi pengelolaan data Master/Detail di bagian Detail Preview Row.
Jika Anda mengaktifkan pengaturan Master/Detail Add (as Detail), Master/Detail Edit (as Detail), dan Master/Detail View (as Detail) di pengaturan level Table pada tabel Detail yang memiliki relasi Master/Detail, maka ketika Pengguna menampilkan area Detail Preview Row dengan mengklik icon plus (+), ketiga tombol yang mewakili masing-masing fungsi di atas (Add, Edit, dan View) akan muncul di bagian bawah dari tabel Detail tadi.
Katakanlah tabel Detail yang kita maksud dalam hal ini adalah orderdetails dan memiliki relasi Master/Detail dengan tabel orders sebagai Master-nya.
Kita ingin menyembunyikan ketiga tombol di atas tadi. Sebagai Web Developer, Anda dapat melakukannya dengan sangat mudah dan cepat. Cukup dengan menaruh kode berikut ke dalam server event Page_Render yang terdapat di bawah Server Events -> Table-Specific -> List Page milik tabel Master yang bertalian:
$GLOBALS["orderdetails_grid"]->DetailAdd = FALSE; $GLOBALS["orderdetails_grid"]->DetailEdit = FALSE; $GLOBALS["orderdetails_grid"]->DetailView = FALSE;
Lagi-lagi PHPMaker sudah menyediakan konsep yang sangat rapi dan terstruktur. Dari kode barusan, kita dapat mengambil kesimpulan bahwa PHPMaker menyediakan sebuah variabel global yang memiliki format nama <nama_table_detail>_grid. Variabel global ini juga sebagai object dari Detail Preview Row yang dapat dilihat dari halaman List milik Record Master.
Karena nama tabel Detail-nya adalah orderdetails, maka nama variabel global tadi menjadi orderdetails_grid. Object dari Detail Preview Row ini masing-masing memiliki property DetailAdd, DetailEdit, dan DetailView. Jadi, untuk menyembunyikannya, kita cukup mengeset property ini dengan nilai FALSE.
Wow, lagi-lagi, betapa mudah, cepat, dan menyenangkannya memakai PHPMaker untuk membangun Aplikasi Web, bukan? 😀
Malam Pak Masino
Pak saya ingin menyembunyikan master/detil edit yang ada di kolom paling kanan. Saya ingin hanya record paling bawah atau max record yang ada master/detil edit. tapi saya sudah gogling mencari kesana kemari gak ada yang berhasil kecuali Jquery $(‘.ewDetailEdit’).hide();. masalahnya kalau pakai Jquery kesusahan naruh scriptnya di pake render atau listoption_rendered. biar bisa atur di baris mana aja di list page yang boleh ada master/detil edit nya. cara di atas pun tak berhasil. saya masih pakai PHPMAKER 2018.
Apakah bisa menyembunyikan master/detil edit di listpage dengan kriteria di row seperti yang saya tulist di atas? saya nemu artikel Pak masino menyembunyikan itu pakai:
Container("OrderdetailsGrid")->DetailEdit = false; // gagal di saya gak ilang tombolnya. $GLOBALS["orderdetails_grid"]->DetailEdit = FALSE; //gagal di saya gak ilang tombolnya. $this->ListOptions->Items["details"]->Visible = FALSE; //gagal juga $GLOBALS["gray_requisition_details_grid"]->DetailView = FALSE; //gagal $this->OtherOptions['addedit'] = new cListOptions(); $this->OtherOptions['addedit']->Body = ""; //gagalHalo Deni,
1. Pakai PHPMaker versi berapa?
2. Ini case-nya untuk contoh table Orders dan Order Details di demo project kan ya?
3. Ingin menyembunyikan tombol/link Master/Detail Edit hanya untuk baris tertentu saja kan ya? Bukan keseluruhan data di Orders nya? Jika ya, maka bisa pakai server event ListOptions_Rendering milik table Master-nya.
iya pak pakai PHPMAKER 2018.0.6
iya untuk di order dan order detail
iya untuk baris tertentu menghilangkan tombol Master/Detail Edit
aku dah coba naruh script-script itu di list page->page load gagal
trus naruh di ListOptions_Rendering juga gagal
ListOptions_Rendered juga gagal.
contoh aku taruh di listpage-> ListOptions_Rendering
$GLOBALS[“orderdetails_grid”]->DetailEdit = FALSE;
hasilnya :
Warning: Creating default object from empty value in C:\xampp\htdocs\masteroffice\daftar_kirimanlist.php on line 2559
dan tombol Master/Detail Edit juga gak hilang.
aku coba satu persatu script tersebut tak satupun yang bisa ngilangin.
taruh di ListOptions_Rendered sama.. page_load sama gak ilang
apa ada cara lain ya pak? biar bisa ngilangi Master/Detail Edit sesuai kriteria baris row nya?
Wah, versi 2018 sudah sangat lama. Sebaiknya selalu usahakan untuk pakai versi terakhir, hari ini sudah versi 2025.
Barusan saya test kode ini di server event ListOptions_Rendering milik table Orders, dan berhasil menyembunyikan tombol Master/Detail Edit untuk data order dengan OrderID = 11076:
if ($this->OrderID->CurrentValue == "11076") { Container("OrderdetailsGrid")->DetailEdit = false; } else { Container("OrderdetailsGrid")->DetailEdit = true; }Iya pak pakai versi 2018,
apakah memang versi selain 2025 atau versi tertentu saja yang bisa ya pak?
untuk ngilangin master/detail edit.?
terima kasih pak
Betul. Kode yang saya kirim barusan itu sepertinya tidak kompatibel dengan PHPMaker 2018, karena versi itu sudah sangat lama, dan versi 2018 seingat saya memang tidak mendukung pemakaian Container().
Jadi, sudah saatnya beralih ke PHPMaker versi terakhir supaya bisa memanfaatkan teknologi terakhir juga.
Barusan saya coba pakai :
$this->ListOptions->Items[“detail_orderdetails”]->Visible = FALSE;
$this->ListOptions->Items[“detail_order_details_extended”]->Visible = FALSE;
Hasilnya sama.. bahkan tak satupun yang hilang. di taruh di ListOptions_Rendered maupun ListOptions_Rendering
error :
Warning: Creating default object from empty value in C:\xampp\htdocs\masteroffice\daftar_kirimanlist.php on line 2559
Warning: Creating default object from empty value in C:\xampp\htdocs\masteroffice\daftar_kirimanlist.php on line 2560
Notice: Undefined property: stdClass::$Name in C:\xampp\htdocs\masteroffice\phpfn14.php on line 3027
Notice: Undefined property: stdClass::$Name in C:\xampp\htdocs\masteroffice\phpfn14.php on line 3027