Rumah >pembangunan bahagian belakang >C++ >Mengapa ASP.NET MVC jqGrid Dropdown Saya Menunjukkan Nilai 'Tidak Ditakrifkan'?
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:
Json(allDestinations);
tanpa JsonRequestBehavior.AllowGet
, tetapi anda perlu menambah ajaxSelectOptions: { type: "POST" }
pada pilihan jqGrid anda.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!