Ich habe ein paar Spalten in jqGrid mit edittype="select". Wie kann ich den Optionswert des aktuell in einer bestimmten Zeile ausgewählten Werts lesen?
Beispiel: Wenn ich die folgende Option zur Verfügung stelle, bekomme ich "FE" für FedEx, etc.
%Vor%getRowData () für rowId / cellname gibt nur die text / displayed-Komponente von select zurück.
Wenn ich ein Datenereignis "change" für die Spalte festlege, ändern die zugrundeliegenden Ereignisse Ereignisse nur bei Mausklicks und nicht bei Tastatureingaben (es gibt zahlreiche Verweise auf allgemeine Auswahlen und Maus- / Tastaturprobleme).
Bottomline, wenn ein neuer Wert ausgewählt wird, muss ich den Optionswert zum Zeitpunkt der Änderung kennen und auch vor dem Posten auf dem Server.
Die Dokumentation für getRowData
states:
Verwenden Sie diese Methode nicht, wenn Sie die Zeile oder Zelle bearbeiten. Dadurch wird der Zelleninhalt zurückgegeben und nicht der tatsächliche Wert des Eingabeelements
Wird die Zeile beim Aufruf von getRowData()
noch bearbeitet?
Aktualisieren
Vereinbart, jqGrid behandelt <select>
nicht sehr gut. In meiner Bewerbung konnte ich das umgehen, indem ich keine Bearbeitungsoption vorgab (was bedeutet, dass Schlüssel / Wert beide "FedEx" waren); Die Übersetzung in die ID erfolgt dann auf dem Server. Dies ist nicht der richtige Weg, um dies zu programmieren, aber es funktionierte gut genug für meine Bedürfnisse zu der Zeit.
Sie müssen den Formatierer der Spalte auf 'select' setzen
Beispiel aus dem Wiki:
colModel: [{name: 'meinname', edittype: 'select', Formatierer: 'select', Bearbeitungsoptionen: {Wert: "1: Eins; 2: Zwei"}} ... ]
Siehe hier jqgridwiki
Ich hatte das gleiche Problem und das funktionierte wie ein Zauber
Ich habe gerade diese Frage gelöst, indem ich die Option JqGrid unformat eingestellt habe und die folgende Funktion für die Unformatierung des Zellenwerts verwende.
%Vor%Die obige Methode wird jedes Mal aufgerufen, wenn das Gitter Zelldaten benötigt, wie wenn Sie die Methode "getRowData" aufrufen. Meine Funktion unterstützt jedoch nur die Bearbeitungsoption für den gepaarten Wert. Sie müssen Ihre Daten wie das folgende Muster ändern.
%Vor%Weitere Informationen zur Option unformat finden Sie unter folgendem Link.
JqGrid Wiki - Benutzerdefinierter Formatierer
PS. Es ist möglich, meine Funktion zu modifizieren, um den clientseitigen Dropdown-Listenwert zu unterstützen. Aber ich denke, es ist unmöglich, diese Funktion für serverseitigen Dropdown-Wert anzuwenden.
Aktualisieren
Im letzten jqGrid 3.8.1 habe ich gerade einen Fehler gefunden, wenn der Benutzer die Bearbeitungszeile abbricht (oder programmatisch die Methode "restoreRow" aufruft), jqGrid erstellt die Beschriftung mit dem Schlüssel der Daten (anstelle des Wertes der Daten). Ich erstelle die folgende Funktion, um dieses Problem zu beheben. Um dies zu verwenden, müssen Sie es als benutzerdefinierte Formatiererfunktion dieser Spalte verwenden. Diese Funktion ordnet den Zellenwert dem Wert der Liste zu, indem Schlüssel oder Wert verglichen werden.
%Vor%Sie können also Schlüssel oder Werte als Spaltendaten senden, die vom oben genannten benutzerdefinierten Formatierer gerendert werden sollen.
Wenn Sie eine Anforderung haben, in der jede Zeile eine Dropdown-Liste hat und Werte wie
habenFE: "FedEx", IN: 'InTime', TN: "TNT"
Jetzt, anstatt die Daten im Backend zu speichern, können Sie Daten auf der Schaltfläche "Speichern" speichern, klicken Sie auf Zeilenebene, aber möchten Sie Dropdwon ausgewählten Wert (TN) nicht anzeigen Text (TNT) speichern. Sie können ein weiteres verstecktes Feld erstellen, um den ausgewählten Ländercode bei der Inline-Bearbeitung des Dropdown-Menüs festzulegen. Hier wird beim User-Exit nach der Cell-Inline-Bearbeitung die afterSaveCell-Methode aufgerufen und Sie können sie wie im folgenden Code angegeben einstellen:
%Vor%