die "undefinierte" Wert in ASP.NET MVC JQGrid Dropdowns
Bei dynamischer Bevölkerung von JQGrid -Dropdowns während der Datenbearbeitung erscheint häufig ein unerwünschter "undefinierter" Wert. Dies ergibt sich aus Inkonsistenzen zwischen der Datenstruktur, die JQGrid -Erwartungen und die Datenliefernmethode.
korrekt JQGrid Datenformat:
Das ideale Format für den Wert des Dropdown -Werts lautet: Wert: "Fe: FedEx; in: intime; tn: tnt"
Problem mit der aktuellen Methode:
Der aktuelle Ansatz verwendet ASP.NET MVC mit JQuery's $. Ajax ()
, um Dropdown -Daten zu holen. A stringBuilder
manipuliert die abgerufenen Daten, um das Format von JQGrid zu entsprechen, aber ein zusätzliches "undefinierter" Eintrag bleibt bestehen.
debuggen Erkenntnisse:
Firebug -Debugging zeigt an, dass zusätzliche Zitate von sb.toString ()
der Schuldige sind. JQGrid fügt seine eigenen Zitate hinzu und führt zu verdoppelten Zitaten und dem "undefinierten" Problem.
Eine überlegene Lösung: uw dataurl
und buildselect
Anstatt die Eigenschaft value
direkt zu manipulieren, beinhaltet eine robustere Lösung die Verwendung von jqGrid's dataurl
und buildselect
Eigenschaften in editOptions
oder searchopions
. Diese ermöglichen eine individuelle Daten abzuholen und formatieren.
Beispiel dataurl
Aktion:
public JsonResult GetDestinationList() {
List allDestinations = GetAllDestinations();
return Json(allDestinations, JsonRequestBehavior.AllowGet);
}
example BuildSelect
Funktion:
buildSelect: function(data) {
var s = '';
if (data && data.length) {
for (var i = 0, l = data.length; i
aktualisiert editOptions
:
{
name: 'destinations',
editable: true,
edittype: 'select',
editoptions: {
dataUrl: '/YourController/GetDestinationList', // Replace with your controller action path
buildSelect: function(data) {
// ... (buildSelect function from above) ...
}
}
}
Wichtige Hinweise:
JSON (Alldestinations);
ohne jsonRequestBehavior.Allowget
, aber Sie müssen ajaxSelectOptions: {Typ: "post"}
zu Ihren JQGrid -Optionen hinzufügen.
in die
$. Ajax () Erfolgshandler, machen
jQuery.parsejson (Data.responSetext) unnötig.
/YourController/GetDestinationList durch den tatsächlichen Pfad zu Ihrer Controller -Aktion zu ersetzen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3