Wie erhalte ich den Wert von select in jqGrid, wenn ich Bearbeitungsoptionen für eine Spalte auswähle

8

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.

    
Venkat Peri 05.04.2010, 21:45
quelle

4 Antworten

-2

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.

    
Justin Ethier 05.04.2010, 21:56
quelle
6

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

    
Mariano Quevedo 04.04.2011 21:23
quelle
1

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.

    
Soul_Master 26.10.2010 07:29
quelle
0

Wenn Sie eine Anforderung haben, in der jede Zeile eine Dropdown-Liste hat und Werte wie

haben

FE: "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%     
kiran patel 23.06.2016 10:27
quelle

Tags und Links