Masino Sinaga

Web Development and PHPMaker

Anda di sini: Beranda / PHPMaker / Menonaktifkan Field Tertentu Saat Data Diubah pada Aplikasi Web dari PHPMaker
Menambahkan Halaman List ke Custom Files di Aplikasi Web dari PHPMaker
Mengambil Data Master untuk Ditampilkan di Tabel Detail pada Halaman Master/Detail

Menonaktifkan Field Tertentu Saat Data Diubah pada Aplikasi Web dari PHPMaker

Ming, 24 Agustus 2014 oleh Masino Sinaga 22 Komentar

Pernahkah Anda sebagai Web Developer ingin menonaktifkan, atau istilah kerennya: men-disable, Field tertentu pada sebuah form saat Pengguna mengubah data? Kalau saya sering menghadapi kondisi ini di sebagian besar Aplikasi Web yang saya bangun dengan PHPMaker. Saya pun yakin hal tersebut pasti sering juga Anda alami. Jika selama ini Anda mengalami kesulitan mengenai hal itu, maka silahkan simak solusi berikut ini.

PHPMaker sudah menyediakan sebuah server event bernama Row_Rendered yang bisa mengatasi kondisi tadi. Seperti namanya, server event ini akan dipanggil saat sistem sedang me-render atau mengeluarkan output HTML dari sebuah baris Record (Row) ke browser Pengguna. Karena itu, maka untuk kasus di atas tadi bisa menggunakan server event ini untuk memanipulasi tampilan object atau Field yang terdapat di sebuah Form pada halaman Edit.

Katakanlah kita ingin menonaktifkan salah satu Field yang bernama Nama_Pegawai di sebuah Form pada halaman Edit (Ubah Data), dengan tujuan supaya Pengguna tidak dapat mengubah data tersebut. Maka solusinya cukup tambahkan kode berikut ke dalam server event Row_Rendered:

// Pertama, pastikan kode berikut untuk halaman "Edit" dan tidak sedang dalam mode konfirmasi
if (CurrentPageID() == "edit" && $this->CurrentAction != "F") {
	$this->Nama_Pegawai->EditValue = $this->Nama_Pegawai->CurrentValue;
	$this->Nama_Pegawai->ReadOnly = TRUE;
}

// Kedua, pastikan untuk halaman "Edit" dan sedang dalam mode konfirmasi (jika diaktifkan dari Field Setup)
if ($this->CurrentAction == "edit" && $this->CurrentAction=="F") {
	$this->Nama_Pegawai->ViewValue = $this->Nama_Pegawai->CurrentValue;
}

Kalau kita perhatikan dengan lebih teliti pada kode di atas, maka ada dua bagian kode di sana.

Bagian Pertama adalah bagian yang paling penting, di mana sistem akan memastikan bahwa kode tersebut hanya saat ID Halaman yang sedang aktif bernilai edit (halaman berisi Form untuk mengubah data), dan Aksi yang terakhir (CurrentAction) tidak bernilai F (Form dalam kondisi terbuka dengan mode Ubah). Sebelum men-disable Field tersebut dengan menugaskan property ReadOnly dengan nilai TRUE, maka kita harus menampilkan terlebih dulu nilai pada property EditValue dengan nilai yang diambil dari nilai sekarang (CurrentValue).

Bagian Kedua adalah bagian yang tidak selalu harus ada, tapi perlu juga kita antisipasi jika Anda mengaktifkan mode Konfirmasi di halaman Edit dari bagian Fields Setup project PHPMaker Anda. Artinya, jika halaman Edit berada dalam mode Konfirmasi, maka kita harus menampilkan nilai Field tersebut yang diambil dari property CurrentValue dan berasal dari mode Ubah pada bagian Pertama sebelumnya.

Kadang-kadang, selain kode di server event Row_Rendered tadi, dibutuhkan juga kode tambahan di server event Row_Updating yang akan dipanggil saat sistem sedang menyimpan data hasil perubahan. Jadi, kode berikut ini hanya digunakan jika diperlukan saja (just in case), ehm.

// Pastikan data yang disimpan berasal dari recordset awal
$rsnew["Nama_Pegawai"] = $rsold["Nama_Pegawai"]; 

Betapa mudah dan simpel sekali, bukan? 🙂

Ditempatkan di bawah: PHPMaker Ditag dengan:PHPMaker Indonesia, Row_Rendered, Server Events, 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, ilovephpmaker.com, dan phpmakerprojects.com.

Menambahkan Halaman List ke Custom Files di Aplikasi Web dari PHPMaker
Mengambil Data Master untuk Ditampilkan di Tabel Detail pada Halaman Master/Detail

Komentar

  1. angga mengatakan

    Sab, 5 September 2015 pada 4:58 pm

    pak mau tanya misal ada 3 teksbox (A,B,C). yg A sudah di edit lalu disave pas mau di edit seharusnya teksbox B, tapi tanpa sengaja si A terhapus. bisakah si A itu di disable sehabis edit pertama kali

    makasih

    Balas
    • Masino Sinaga mengatakan

      Sab, 5 September 2015 pada 6:17 pm

      Bisa saja, prinsip cara men-disable sama dengan contoh kode di artikel ini. Anda harus membuat kondisi yang memeriksa apakah field tersebut sudah pernah diedit pertama kali, misalnya dengan menyimpan status setiap field yang sudah diubah ke tabel lain, lalu cek dari tabel tersebut setiap kali user akan mengubah data di suatu field.

      Untuk mengecek apakah suatu field akan diubah saat akan disimpan, tinggal bandingkan nilai field tersebut dari recordset lama ($rsold) dan recordset baru ($rsnew). Jika keduanya tidak sama, berarti field itu akan diubah.

      Balas
      • angga mengatakan

        Sab, 5 September 2015 pada 10:27 pm

        sebelumnya terima kasih pak atas jawabannya. saya sudah tester dgn script diatas dan sudah saya coba2 . mungkin petanyaan saya juga yg keliru :). saya coba modifikasi spt berikut

        if (CurrentPageID() == “edit” && $this->CurrentAction != “F”) {
        $this->field_1->EditValue = $this->field_1->CurrentValue;
        $this->field_1->ReadOnly = TRUE;
        }
        else {
        //$this->field_1->EditValue = $this->field_1->CurrentValue = NULL;
        $this->field_1->OldValue = $this->field_1->CurrentValue;
        $this->field_1->ReadOnly = FALSE;
        }

        if ($this->CurrentAction == “edit” && $this->CurrentAction==”F”) {
        $this->field_1->ViewValue = $this->field_1->CurrentValue;
        }
        }

        dan kalau boleh bertanya kembali, jika field_1 sudah ada data maka teksboxA disable, tetapi jika data masih kosong teksboxA enable.

        terima kasih

        Balas
        • Masino Sinaga mengatakan

          Sen, 7 September 2015 pada 11:23 am

          Kode Anda tersebut tidak menangani kondisi jika data di field_1 tersebut sudah ada datanya atau kosong. Kode itu hanya menangani kondisi jika di halaman form Edit dan tidak dalam mode konfirmasi, dan juga sebaliknya selain kondisi tadi.

          Balas
          • angga mengatakan

            Kam, 10 September 2015 pada 7:29 pm

            sudah bisa akhirnya pak. makasih yah pak ntar boleh tanya2 lagi 🙂

            Balas
            • Masino Sinaga mengatakan

              Jum, 11 September 2015 pada 10:36 am

              Sama-sama.

              Balas
  2. Pramudiyanto mengatakan

    Rab, 22 Maret 2017 pada 9:40 am

    Salam kenal Pak Masino

    Seandainya yg akan di disable adalah combobox dengan pilihan modal dialog for lookup, bagaimana scriptnya ya.
    saya coba dengan script ini

    $this->Nama_Pegawai->ReadOnly = TRUE;

    tidak berhasil, mohon bantuannya

    terima kasih

    Balas
    • Masino Sinaga mengatakan

      Rab, 22 Maret 2017 pada 10:02 am

      Cek id elemennya dari View Page Source browser, lalu gunakan jQuery untuk menyembunyikan elemen berdasarkan id-nya.

      Balas
      • Pramudiyanto mengatakan

        Rab, 22 Maret 2017 pada 11:17 am

        Akhirnya berhasil

        Terima kasih Pak Masino

        Balas
        • Masino Sinaga mengatakan

          Rab, 22 Maret 2017 pada 11:24 am

          Sama-sama. Kebetulan saya baru saja menulis artikel yang terkait dengan ini: Begini Mudahnya Membuat Field Lookup dengan Modal Dialog Menjadi ReadOnly.

          Balas
          • Pramudiyanto mengatakan

            Rab, 22 Maret 2017 pada 11:39 am

            Wah, ini dia yang saya cari..

            Sekali lagi, terima kasih Pak Masino

            Balas
            • Masino Sinaga mengatakan

              Rab, 22 Maret 2017 pada 12:31 pm

              Oke, sama-sama.

              Balas
  3. Septian mengatakan

    Kam, 18 Mei 2017 pada 10:10 am

    Salam kenal pak masino,

    Bagaimana jika kita ingin menonaktifkan field pada halaman “add”? Karena case yang saya buat adalah field yang akan saya disable ini telah otomatis terisi berdasarkan field lain pada tabel tersebut..

    Terima kasih sebelumnya pak 🙂

    Balas
    • Masino Sinaga mengatakan

      Jum, 19 Mei 2017 pada 2:11 pm

      Gunakan jQuery code, dan taruh di bagian Client Scripts -> Startup Script pada halaman bertalian.

      Balas
  4. Henry mengatakan

    Rab, 13 September 2017 pada 6:54 am

    Pak Masino, saya pemula pengen belajar.
    1. Hal edit kalo di phpmaker standartnya namanya apa ya? Apa ‘namatabeledit’?

    Balas
    • Masino Sinaga mengatakan

      Kam, 14 September 2017 pada 10:40 am

      Iya betul.

      Balas
  5. Pieter Allan mengatakan

    Jum, 27 Oktober 2017 pada 8:16 pm

    Pak saya mau tanya..

    Bagaimana cara mengatasi sebuah kondisi seperti ini :

    ketika user ingin mengubah data pada satu table namun ada satu filed yang tidak boleh diubah tapi jika kondisi field tersebut kosong (tidak ada datanya) data bisa terubah

    namun ketika field itu sudah ada datanya, data tidak bisa diubah

    Terimakasih..

    Balas
    • Masino Sinaga mengatakan

      Sab, 30 November 2019 pada 10:50 am

      Pakai server event Row_Inserting jika ingin menambah data, atau Row_Updating jika ingin mengubah data. Tinggal periksa saja nilai field yang terkait, dan jika tidak sesuai, tampilkan pesan error, dan di bawahnya kembalikan nilai FALSE.

      Balas
  6. Julian mengatakan

    Rab, 27 November 2019 pada 11:35 am

    Bang masino Ysh

    Bang saya mau tanya… saya mebuat input select misal:

    POOL

    Bubutan
    Perak
    Sawahan
    Simpang
    Gubeng

    maksud saya begini bang…kalau kita pakai ceckbox untuk memilih pool yang sama pada saat input dan yang terpilih pool itu terus, atau yang saya maksud seperti Nama Pengirim sama pada aplikasi internal kantor (mungkin bang masino tau maksud saya) itu gimana bang… maaf newbie bang masih belajar. hatur nuhun kang.

    Balas
    • Masino Sinaga mengatakan

      Sab, 30 November 2019 pada 10:48 am

      Pakai jQuery code untuk menangani saat user memilih Checkbox, simpan nilai pilihan itu di Cookie, lalu saat form dimuat kemudian, ambil kembali nilai di Cookie tadi, untuk ditampilkan lagi pada Checkbox yang terakhir terpilih tersebut.

      Balas
  7. Charly mengatakan

    Ming, 27 Februari 2022 pada 8:54 am

    Pak Masino, mohon bantuannya.

    Jika saya mau menambah data baru dan men-disable sebuah field berdasarkan pilihan pada combo box yang terpilih. Misalkan pilihan di combo box = A, Field Keterangan tidak aktif, tetapi pada saat pilihan combo box = B, Field Keterangan menjadi aktif kembali. Mohon bantuannya Pak Masino. Makasih

    Balas
    • Masino Sinaga mengatakan

      Sel, 1 Maret 2022 pada 9:58 am

      Pakai jQuery code, dan taruh di bagian Startup Script.

      Balas

Tinggalkan Balasan Batalkan balasan

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

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.

Pos-pos Terbaru

  • Masino Extensions untuk PHPMaker 2024 Sudah Dirilis, Silahkan Download!
  • Fitur-Fitur Masino Extensions untuk PHPMaker 2024
  • Review PHPMaker 2024
  • Mudahnya Mengunci Record dengan Javascript Count Down di PHPMaker 2023
  • Ini Alasan Kenapa Kalian Harus Beralih ke PHP 8

Menu

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

Komentar Terbaru

  • Masino Extensions untuk PHPMaker 2024 Sudah Dirilis, Silahkan Download! – Masino Sinaga pada Fitur-Fitur Masino Extensions untuk PHPMaker 2024
  • Fitur-Fitur Masino Extensions untuk PHPMaker 2024 – Masino Sinaga pada Custom Domain URL di Masino Extensions untuk PHPMaker 2020
  • Fitur-Fitur Masino Extensions untuk PHPMaker 2024 – Masino Sinaga pada Membatasi Akses Versi Live dan Versi Development Aplikasi Web dari PHPMaker
  • Fitur-Fitur Masino Extensions untuk PHPMaker 2024 – Masino Sinaga pada Nomor Urut Record di Export Data pada PHPMaker 2020 dan PHPMaker 2021
  • Masino Sinaga pada Review PHPMaker 2024

Situs Terkait

  1. I Love PHPMaker
  2. Situs Resmi PHPMaker
  3. Forum Diskusi PHPMaker
  4. PHPMaker di IlmuKomputer.com
  5. PHPMaker Projects
  6. 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 - 2023 | WordPress | Catat masuk | Kembali ke atas