Menggunakan jQuery $.post dan ASP.NET MVC untuk Mengisi Dropdown jqGrid Dengan Betul
Artikel ini menangani isu biasa apabila mengisi lungsur jqGrid secara dinamik menggunakan kaedah $.post jQuery dan ASP.NET MVC: menerima nilai "tidak ditentukan" disebabkan pemformatan data yang salah.
Masalahnya: Format data yang salah dihantar ke jqGrid, mengakibatkan nilai lungsur turun "tidak ditentukan". JqGrid menjangkakan format tertentu (cth., value: "FE:FedEx; IN:InTime; TN:TNT"
), tetapi permintaan itu mungkin mengembalikan data dalam format yang berbeza.
Permintaan dan Respons Asal: Pendekatan asal mungkin menggunakan $.post untuk mengambil data JSON. Walau bagaimanapun, struktur JSON tidak sepadan dengan jangkaan jqGrid. Penyelesaian itu melibatkan mengalih keluar petikan tambahan semasa penciptaan nilai dan menukar tindak balas pengawal kepada ContentResult(sb.ToString())
. Ini adalah kaedah yang kurang mantap.
Penyelesaian yang Lebih Teguh: Memanfaatkan dataUrl
dan buildSelect
Pendekatan unggul menggunakan ciri dataUrl
dan buildSelect
jqGrid untuk kod yang lebih bersih dan boleh diselenggara.
dataUrl
: Sifat ini menentukan URL yang mengembalikan data dalam format yang lebih mudah, sesuai untuk menghuraikan. Format tidak perlu dipraformat sebagai rentetan pasangan nilai kunci.
buildSelect
: Fungsi panggil balik ini memproses respons pelayan (sebaik-baiknya JSON) dan membina HTML lungsur turun yang betul. Ini memisahkan pengambilan data daripada pemformatan data, menambah baik organisasi kod dan kebolehbacaan.
Contoh Pelaksanaan:
Pengawal (ASP.NET MVC):
<code class="language-csharp">public JsonResult GetDestinationList() { List<string> allDestinations = GetAllDestinations(); return Json(allDestinations, JsonRequestBehavior.AllowGet); }</code>
Konfigurasi jqGrid (JavaScript):
<code class="language-javascript">{ name: 'destinations', editable: true, edittype: 'select', editoptions: { dataUrl: '/YourController/GetDestinationList', // Replace with your controller action buildSelect: function(data) { var s = ''; if (data.length) { for (var i = 0; i < data.length; i++) { var ri = data[i]; // Assuming data is an array of strings s += '<option value="' + ri + '">' + ri + '</option>'; } } return s; } } }</code>
Pendekatan yang disemak ini menyediakan penyelesaian yang lebih cekap dan boleh diselenggara untuk mengisi dropdown jqGrid. Pelayan mengembalikan data mudah, dan fungsi buildSelect
sisi klien mengendalikan pemformatan, yang membawa kepada pengasingan kebimbangan yang lebih baik. Ingat untuk menggantikan /YourController/GetDestinationList
dengan URL sebenar kepada tindakan pengawal anda.
Atas ialah kandungan terperinci Bagaimana untuk Mengisi Dropdown jqGrid Dengan Betul Menggunakan jQuery $.post dan ASP.NET MVC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!