Masino Sinaga

Web Development, PHPMaker, & PHP Report Maker

Anda di sini: Beranda / PHPMaker / Mencegah Pengguna Menambah Baris Baru di Tabel Detail Aplikasi Web dari PHPMaker
Mengetahui ID Terakhir dari Record yang Ditambahkan di Aplikasi Web dari PHPMaker
Antara Page_Load atau Page_DataRendering di Halaman List dari PHPMaker

Mencegah Pengguna Menambah Baris Baru di Tabel Detail Aplikasi Web dari PHPMaker

Juni 5, 2015 oleh Masino Sinaga 4 Komentar

Salah satu fitur canggih dari sekian banyaknya fitur unggulan di PHPMaker, adalah kemampuan menghasilkan Aplikasi Web yang memungkinkan Pengguna menambahkan data Master/Detail dalam satu halaman. Pengguna tidak perlu berpindah atau memuat halaman lain untuk menambahkan data Detail. Di PHPMaker hal ini dikenal dengan istilah Master/Detail Add.

Jadi, data Master yang akan diinput berada di bagian atas, dan data Detail berada di bagian bawah dari data Master-nya. Data Master ditampilkan dalam bentuk tabular (form tunggal), sedangkan data Detail ditampilkan dalam bentuk kolumnar (tabel). Sebuah layout yang sering kita lihat saat menambah data Master dan Detail secara bersamaan.

Pengguna dapat menambahkan baris baru di bagian tabel Detail dengan cara mengklik tombol Add Blank Row. Pengguna juga dapat menghapus baris data yang tidak diinginkan dengan mengklik tombol Delete yang terdapat di setiap baris yang bertalian, sebelum data dan semua perubahan tadi disimpan ke Database.

Untuk menyimpan data Master dan Detail sekaligus, maka Pengguna cukup hanya menekan sekali tombol saja. Betapa kerennya, bukan? 😀

Beberapa Aplikasi Web tentu saja ada yang harus membatasi jumlah record di bagian Detail yang bisa ditambahkan, di halaman Master/Detail Add tadi.

Katakanlah untuk data Master/Detail orders/orderdetails, jumlah maksimal Record di tabel Detail orderdetails yang boleh ditambahkan di form Master/Detail Add tadi adalah 3. Tentu saja untuk mencegah Pengguna menambah baris keempat dan seterusnya, maka kita harus menyembunyikan tombol Add Blank Row.

Pertanyaannya adalah, bagaimana cara kita melakukan semua itu? Hehe… penasaran, ‘kan?

Solusinya ternyata sangat mudah, cepat, dan menyenangkan! 🙂

Pertama, untuk membatasi jumlah maksimal Record tadi, kita hanya perlu menambahkan kode ini ke dalam server event Page_Load yang terdapat di bawah lokasi Server Events -> Table-Specific -> List Page milik table orderdetails, sehingga kode selengkapnya menjadi seperti ini:

// Page Load event
function Page_Load() {
	//echo "Page Load";
	if ($this->getCurrentMasterTable() == "orders") {
		$this->GridAddRowCount = 3;
	}
}

Perhatikan kode barusan. Jangan lupa kita harus memeriksa apakah halaman List table orderdetails saat itu menyertakan table Master-nya orders dengan menggunakan method getCurrentMasterTable. Jika ya, maka set property GridAddRowCount milik object table Detail dengan nilai 3.

Kedua, untuk menghilangkan tombol Add Blank Row, maka kita cukup menaruh kombinasi antara kode PHP dan jQuery berikut ke dalam bagian Startup Script yang terdapat di bawah lokasi Client Scripts -> Table-Specific -> Add/Copy Page milik table Master orders, sehingga kode selengkapnya menjadi seperti ini:

<?php if (CurrentPage()->getCurrentDetailTable() <> "") { ?>
$(document).ready(function() {
	$('.ewAddBlankRow').hide();
	$('.ewGridDelete').hide();
});
<?php } ?>

Sekarang mari simak kode yang terakhir ini. Tentu pertanyaan yang pertama kali muncul adalah, mengapa kita harus mengkombinasikan antara pemakaian kode PHP dan jQuery di bagian Client Scripts milik table orders pada halaman Add?

Jawabannya sederhana saja. Karena kita harus memeriksa di halaman Add tersebut apakah saat itu sistem menyertakan table Detail dengan menggunakan method getCurrentDetailTable. Jika ya, maka kita menyembunyikan tombol Add Blank Row berdasarkan nama class tombolnya, ewAddBlankRow. Kita juga perlu menyembunyikan tombol Delete di setiap baris Record tabel Detail, melalui nama class tombolnya, ewGridDelete.

Mungkin masih ada yang penasaran, mengapa tidak ditangani saja di sisi table Detail seperti kode pada server event tadi? Hehe, jawabannya karena tujuan utama kita hanya ingin menyembunyikan tombol Add Blank Row, sementara di sisi yang lain PHPMaker tidak menyediakan Client Scripts khusus untuk halaman Detail yang ditampilkan bersamaan dengan table Master-nya.

Itulah kenapa akhirnya kita mengoptimalkan kode jQuery tersebut di dalam Client Scripts milik table Master, yaitu orders. Jadi, kita perlu memeriksa apakah di halaman Add tersebut saat itu sistem menyertakan table Detail yang terkait, yang dalam hal ini adalah orderdetails.

Bagaimana? Betapa mudah, cepat, sederhana, dan langsung to the point, bukan? Tidak perlu memodifikasi kode di file script yang akan dihasilkan oleh PHPMaker, tidak perlu memodifikasi Template PHPMaker, dan tidak perlu juga bersusah payah menulis kode sampai berpuluh-puluh, beratus-ratus, atau bahkan beribu-ribu baris untuk menghasilkan fitur seperti di atas.

Ternyata PHPMaker pun bisa memancing kreativitas Web Developer untuk mengoptimalkan setiap jengkal bagian Server Events maupun Client Scripts yang sudah disediakannya. Luar biasa!

PHPMaker mau dilawan? PHPMaker sing ada lawaaaaaan! Hehehe… 😀

Ditempatkan di bawah: PHPMaker Ditag dengan:Belajar PHPMaker, GridAddRowCount, Master/Detail, Master/Detail Add, PHPMaker Indonesia, Tutorial PHPMaker

Masino Sinaga

Web Developer pengguna PHPMaker untuk membangun Aplikasi Web sejak tahun 2004. Sampai sekarang masih aktif dan rajin membagikan pengalamannya menggunakan PHPMaker melalui situs masinosinaga.com dan ilovephpmaker.com.

Mengetahui ID Terakhir dari Record yang Ditambahkan di Aplikasi Web dari PHPMaker
Antara Page_Load atau Page_DataRendering di Halaman List dari PHPMaker

Comments

  1. andi usman mengatakan

    Juni 7, 2015 pada 9:31 am

    Salam kenal mas,saya sebagai pengguna pemula php maker ada beberapa yang mau tanyakan mengenai phpmaker
    apakah phpmaker bisa membuat suatu aplikasi web tanpa harus mengedit source codenya. contoh dalam proses transaksi penjualan, dalam transaksi tersebut terdapat beberapa tabel yang di joinkan, kemudian disimpan kedalam satu tabel detail, seperti proses tambah beberapa data, baru disimpan, lebih jelasnya seperti kita belanja di supermarket, diinput beberapa item barang lalu disimpan kedalam satu tabel utama/detil barang berdasarkan 1 transaksi.
    Makasih.

    Balas
    • Masino Sinaga mengatakan

      Juni 7, 2015 pada 9:36 pm

      Salam kenal kembali mas. Apakah seperti ini yang Anda maksudkan? http://sourceforge.net/projects/stock-inventory-management/

      Balas
      • andi usman mengatakan

        Juni 17, 2015 pada 1:05 pm

        benar mas,mungkin seperti stock management,bagian mana ditambahkan fungsi seperti ini

        $(document).ready(function() {
            $("#x_A, #x_B").keyup(function () {
               $("#x_C").val($("#x_A").val() * $("#x_B").val());    
            }); 
        });
        

        karena saya coba pada buat di client script – add/copy/startup script tidak bisa berjalan untuk detailnya,padahal saya udah buat script diatas di tabel detail,untuk contoh script diatas bisa berjalan di detail jika mengklik tombol add, tetap pada saat klik add penjualan/detailpenjualan,fungsi diatas tidak berfungsi.
        mksh

        Balas
        • Masino Sinaga mengatakan

          Juni 17, 2015 pada 2:21 pm

          Untuk mendapatkan file project Stock Inventory Management tersebut, maka silahkan download dari situs I Love PHPMaker. Supaya bisa mendownload, maka Anda harus sign-up sebagai member di situs tersebut.

          Dari dalam file project tersebut Anda bisa melihat sekaligus mempelajari teknik untuk menempatkan kode tersebut di bagian Client Scripts pada table yang terkait.

          Bukan hanya itu saja, ada begitu banyak trik yang bisa Anda pelajari dari file project tersebut. Selain itu, Anda pun bisa menggunakan Masino Extensions di project PHPMaker Anda, supaya Aplikasi Web yang dihasilkan menjadi lebih profesional, baik dari sisi tampilan maupun untuk fitur/fungsionalitas lainnya.

          Balas

Tinggalkan Balasan Batalkan balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Pos-pos Terbaru

  • Server Event Page_Render dan Page_Rendering di PHPMaker, Apa Sih Bedanya?
  • Begini Mudahnya Mengubah Judul Browser Secara Dinamis di PHPMaker 2021
  • Solusi Supaya PreviewRow dan PreviewOverlay Bisa Sama-Sama Berfungsi di PHPMaker 2021
  • Jangan Pernah Lagi Mencampur Kode PHP di Client Script atau Startup Script pada PHPMaker 2021
  • Seperti Ini Mudahnya Menyembunyikan Data Label di Chart dari PHPMaker 2021

Menu

  • Siapa Saya?
  • Web Development
  • PHPMaker
  • Umum
  • Syarat dan Ketentuan
  • Sitemap (Peta Situs)
  • Komentar

Komentar Terbaru

  • Masino Sinaga pada Setting Import Data Berikut Wajib Anda Ketahui Bedanya di PHPMaker 2021
  • Masino Sinaga pada Jangan Pernah Lagi Mencampur Kode PHP di Client Script atau Startup Script pada PHPMaker 2021
  • Masino Sinaga pada Mudahnya Menambahkan Global Function untuk Auto-Update Field di PHPMaker
  • Abu Syifa pada Setting Import Data Berikut Wajib Anda Ketahui Bedanya di PHPMaker 2021
  • Abu Syifa pada Jangan Pernah Lagi Mencampur Kode PHP di Client Script atau Startup Script pada PHPMaker 2021

Situs Terkait

  1. I Love PHPMaker
  2. Situs Resmi PHPMaker
  3. Forum Diskusi PHPMaker
  4. PHPMaker di IlmuKomputer.com
  5. PHPMaker Learning

Baru di PHPMaker?

Baca ini terlebih dulu ...

  1. Ayo Menjadi Web Developer yang Cerdas!
  2. PHPMaker: PHP Code Generator + PHP Framework
  3. Pertanyaan-Pertanyaan yang Paling Sering Diajukan Seputar PHPMaker
  4. Tips buat Anda Pemula yang Baru Mengenal dan Menggunakan PHPMaker
  5. Bacalah Help, Bacalah Help, dan Bacalah Help di PHPMaker!

(c) Masino Sinaga 2009 - 2019 | WordPress | Catat masuk | Kembali ke atas