Verwendung von jQuery $.post und ASP.NET MVC zum korrekten Auffüllen von jqGrid-Dropdowns
Dieser Artikel befasst sich mit einem häufigen Problem beim dynamischen Auffüllen von jqGrid-Dropdowns mithilfe der $.post-Methode von jQuery und ASP.NET MVC: Empfang eines „undefinierten“ Werts aufgrund falscher Datenformatierung.
Das Problem: Falsches Datenformat wird an jqGrid gesendet, was zu „undefinierten“ Dropdown-Werten führt. Das jqGrid erwartet ein bestimmtes Format (z. B. value: "FE:FedEx; IN:InTime; TN:TNT"
), aber die Anfrage gibt möglicherweise Daten in einem anderen Format zurück.
Die ursprüngliche Anfrage und Antwort: Der ursprüngliche Ansatz verwendete wahrscheinlich $.post, um JSON-Daten abzurufen. Allerdings entsprach die JSON-Struktur nicht den Erwartungen von jqGrid. Die Lösung bestand darin, zusätzliche Anführungszeichen während der Wertschöpfung zu entfernen und die Reaktion des Controllers auf ContentResult(sb.ToString())
zu ändern. Dies ist eine weniger robuste Methode.
Eine robustere Lösung: Nutzung von dataUrl
und buildSelect
Ein überlegener Ansatz nutzt die dataUrl
- und buildSelect
-Funktionen von jqGrid für saubereren, besser wartbaren Code.
dataUrl
: Diese Eigenschaft gibt eine URL an, die Daten in einem einfacheren Format zurückgibt, das zum Parsen geeignet ist. Das Format muss nicht als Zeichenfolge aus Schlüssel-Wert-Paaren vorformatiert werden.
buildSelect
: Diese Rückruffunktion verarbeitet die Antwort des Servers (idealerweise JSON) und erstellt den richtigen Dropdown-HTML. Dies trennt den Datenabruf von der Datenformatierung und verbessert die Codeorganisation und Lesbarkeit.
Beispielimplementierung:
Controller (ASP.NET MVC):
public JsonResult GetDestinationList() { List<string> allDestinations = GetAllDestinations(); return Json(allDestinations, JsonRequestBehavior.AllowGet); }
jqGrid-Konfiguration (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; } } }
Dieser überarbeitete Ansatz bietet eine effizientere und wartbarere Lösung zum Füllen von jqGrid-Dropdowns. Der Server gibt einfache Daten zurück und die clientseitige Funktion buildSelect
übernimmt die Formatierung, was zu einer besseren Trennung der Anliegen führt. Denken Sie daran, /YourController/GetDestinationList
durch die tatsächliche URL zu Ihrer Controller-Aktion zu ersetzen.
Das obige ist der detaillierte Inhalt vonWie füllt man jqGrid-Dropdowns mit jQuery $.post und ASP.NET MVC korrekt auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!