Rumah >hujung hadapan web >tutorial js >Mengapakah borang edit dalam jqGrid memaparkan nilai pilihan yang salah dalam kotak pilihan semasa mengedit rekod?

Mengapakah borang edit dalam jqGrid memaparkan nilai pilihan yang salah dalam kotak pilihan semasa mengedit rekod?

DDD
DDDasal
2024-11-01 02:43:28606semak imbas

Why does the edit form in jqGrid display incorrect option values in select boxes when editing records?

Nilai Pilihan Jatuh Turun Pilih Salah dalam Kotak Sunting

Apabila menggunakan edit borang dalam jqGrid, ada kemungkinan untuk menemui nilai pilihan yang salah dalam kotak pilihan semasa mengedit rekod. Khususnya, nilai mungkin bermula dari 0 dan bukannya nilai mula yang betul.

Penerangan Isu

Pertimbangkan senario berikut:

  • Dua pilihan kotak ada: Negara dan Negeri.
  • Pilihan kotak pilihan negeri bergantung pada negara yang dipilih.
  • Sebagai contoh, "Negara: AS (nilai pilihan=1)" mempunyai pilihan negeri dengan nilai bermula daripada 1 ("Alabama: nilai pilihan=1").

Apabila mengedit rekod di mana negara itu ialah UK (nilai pilihan=2) dan keadaannya ialah Oxford (nilai pilihan=6), borang edit pada mulanya akan memaparkan negara dan negeri yang betul. Walau bagaimanapun, apabila kotak pilihan keadaan dibuka, nilai pilihan akan menjadi salah dan bermula dari 0. Nilai pilihan yang betul harus bermula dari 5.

Sebab

The punca utama ialah nilai pilihan penyuntingan untuk kotak terpilih digunakan sekali sahaja semasa pemulaan. Dalam kes di mana pilihan untuk kotak pilihan kedua diisi secara dinamik berdasarkan nilai kotak pilihan pertama, anda perlu mengemas kini pilihan kotak pilihan kedua secara manual.

Penyelesaian

Untuk menyelesaikan isu ini, kami akan mengikuti langkah berikut:

  1. Tetapkan semula nilai pilihan awal kotak pilihan kedua kepada senarai statik (cth., semua keadaan tersedia).
  2. Apabila nilai kotak pilihan pertama berubah, bina semula pilihan untuk kotak pilihan kedua berdasarkan negara yang dipilih.
  3. Gunakan dataEvents untuk mengendalikan perubahan dalam kotak pilihan pertama dan cetuskan pembinaan semula kotak pilihan kedua.

Contoh Kod

<code class="javascript">resetStatesValues = function () {
    grid.setColProp('State', { editoptions: { value: states} });
};
grid.jqGrid({
   // ... other configuration options
   editoptions: {
       value: countries,
       dataEvents: [
           {
               type: 'change',
               fn: function(e) {
                   resetStatesValues();

                   var countryId = $(e.target).val();
                   var sc = statesOfCountry[countryId];
                   var newOptions = '';
                   for (var stateId in sc) {
                       newOptions += '<option value="' +
                                  stateId + '">' +
                                  states[stateId] + '</option>';
                   }

                   if ($(e.target).is('.FormElement')) {
                       var form = $(e.target).closest('form.FormGrid');
                       $("select#State.FormElement", form[0]).html(newOptions);
                   } else {
                       var row = $(e.target).closest('tr.jqgrow');
                       var rowId = row.attr('id');
                       $("select#" + rowId + "_State", row[0]).html(newOptions);
                   }
               }
           }
       ]
   }
});</code>

Dengan melaksanakan langkah-langkah ini, kami memastikan bahawa nilai pilihan kotak pilihan kedua sentiasa tepat berdasarkan negara yang dipilih dalam kotak pilihan pertama.

Atas ialah kandungan terperinci Mengapakah borang edit dalam jqGrid memaparkan nilai pilihan yang salah dalam kotak pilihan semasa mengedit rekod?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn