Rumah >pembangunan bahagian belakang >C++ >Mengapa ASP.NET MVC jqGrid Dropdown Saya Menunjukkan Nilai 'Tidak Ditakrifkan'?

Mengapa ASP.NET MVC jqGrid Dropdown Saya Menunjukkan Nilai 'Tidak Ditakrifkan'?

DDD
DDDasal
2025-01-11 08:45:42965semak imbas

Why Does My ASP.NET MVC jqGrid Dropdown Show an

Menyelesaikan Nilai "tidak ditentukan" dalam ASP.NET MVC jqGrid Dropdown

Apabila mengisi dropdown jqGrid secara dinamik semasa penyuntingan data, nilai "tidak ditentukan" yang tidak diingini kerap muncul. Ini berpunca daripada ketidakkonsistenan antara struktur data yang dijangkakan oleh jqGrid dan kaedah penghantaran data.

Format Data jqGrid yang betul:

Format ideal untuk nilai lungsur turun ialah: value: "FE:FedEx; IN:InTime; TN:TNT"

Masalah dengan Kaedah Semasa:

Pendekatan semasa menggunakan ASP.NET MVC dengan $.ajax() jQuery untuk mengambil data lungsur turun. A StringBuilder memanipulasi data yang diambil untuk memadankan format jqGrid, tetapi entri tambahan "tidak ditentukan" berterusan.

Penemuan Nyahpepijat:

Penyahpepijatan FireBug menunjukkan bahawa petikan tambahan yang diperkenalkan oleh sb.ToString() adalah puncanya. jqGrid menambah petikan sendiri, membawa kepada petikan berganda dan isu "tidak ditentukan".

Penyelesaian Unggul: Menggunakan dataUrl dan buildSelect

Daripada memanipulasi sifat value secara langsung, penyelesaian yang lebih mantap melibatkan penggunaan sifat dataUrl dan buildSelect jqGrid dalam editoptions atau searchoptions. Ini membenarkan pengambilan dan pemformatan data tersuai.

Contoh dataUrl Tindakan:

<code class="language-csharp">public JsonResult GetDestinationList() {
    List<string> allDestinations = GetAllDestinations();
    return Json(allDestinations, JsonRequestBehavior.AllowGet);
}</code>

Contoh buildSelect Fungsi:

<code class="language-javascript">buildSelect: function(data) {
    var s = '';
    if (data && data.length) {
        for (var i = 0, l = data.length; i < l; i++) {
            s += data[i] + ';'; // Assuming data[i] is already in "key:value" format
        }
        return s.substring(0, s.length - 1); // Remove trailing semicolon
    }
    return s;
}</code>

Dikemas kini editoptions:

<code class="language-javascript">{
    name: 'destinations',
    editable: true,
    edittype: 'select',
    editoptions: {
        dataUrl: '/YourController/GetDestinationList', // Replace with your controller action path
        buildSelect: function(data) {
            // ... (buildSelect function from above) ...
        }
    }
}</code>

Nota Penting:

  • Anda boleh menggunakan Json(allDestinations); tanpa JsonRequestBehavior.AllowGet, tetapi anda perlu menambah ajaxSelectOptions: { type: "POST" } pada pilihan jqGrid anda.
  • Dalam versi jqGrid yang lebih baharu, buildSelect dipanggil dalam $.ajax() pengendali kejayaan, menjadikan jQuery.parseJSON(data.responseText) tidak perlu.

Pendekatan yang disemak ini menyediakan kaedah yang lebih bersih, cekap dan kurang ralat untuk mengurus lungsur turun jqGrid, menghapuskan isu nilai "tidak ditentukan". Ingat untuk menggantikan /YourController/GetDestinationList dengan laluan sebenar kepada tindakan pengawal anda.

Atas ialah kandungan terperinci Mengapa ASP.NET MVC jqGrid Dropdown Saya Menunjukkan Nilai 'Tidak Ditakrifkan'?. 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