jqGrid: Handhabung der indirekten Datenanzeige
Beim Umgang mit Tabellendaten müssen Sie häufig Daten aus verschiedenen Tabellen anzeigen. Wenn Sie beispielsweise eine Haupttabelle haben, die Studentennamen und Stadt-IDs enthält, und eine andere Tabelle, die Stadt-IDs tatsächlichen Stadtnamen zuordnet, möchten Sie möglicherweise Stadtnamen anstelle von Stadt-IDs im Raster anzeigen.
Einschränkungen der Direktverbindungsmethode
Ein gängiger Ansatz besteht darin, diese Tabellen basierend auf dem Stadt-ID-Feld zu verknüpfen. Dieser Ansatz wird jedoch unpraktisch, wenn Sie eine Klassenstruktur verwenden, die ein Stadt-ID-Feld anstelle des tatsächlichen Stadtnamens enthält.
Lösung: Verwenden Sie die Suchfunktion, um die ID zu dekodieren
Um dieses Problem zu lösen, stellt jqGrid die Funktion formatter: "select"
bereit. Mit dieser Funktion können Sie eine Stadt-ID in den entsprechenden Stadtnamen umwandeln. Für diese Dekodierung ist jedoch eine Wertezuordnung erforderlich, und diese Zuordnung muss festgelegt werden, bevor jqGrid die Serverantwort verarbeitet.
Der empfohlene Ansatz besteht darin, Ihre Serverantwort um zusätzliche editoptions.value
Attributdaten zu erweitern, die mithilfe des Formatierers „select“ für die Spalte verwendet werden. Diese erweiterte Antwort kann das folgende Format haben:
<code class="language-json">{ "cityMap": {"11": "Chennai", "12": "Mumbai", "13": "Delhi"}, "rows": [ { "SID": "1", "SNAME": "ABC", "CITY": "11" }, { "SID": "2", "SNAME": "XYZ", "CITY": "12" }, { "SID": "3", "SNAME": "ACX", "CITY": "13" }, { "SID": "4", "SNAME": "KHG", "CITY": "13" }, { "SID": "5", "SNAME": "ADF", "CITY": "12" }, { "SID": "6", "SNAME": "KKR", "CITY": "11" } ] }</code>
In Ihren jqGrid-Einstellungen können Sie die Spalten wie folgt konfigurieren:
<code class="language-javascript">colModel: [ {name: "SNAME", width: 250}, {name: "CITY", width: 180, align: "center"} ], beforeProcessing: function (response) { var $self = $(this); $self.jqGrid("setColProp", "CITY", { formatter: "select", edittype: "select", editoptions: { value: $.isPlainObject(response.cityMap) ? response.cityMap : [] } }); }, jsonReader: { id: "SID"}</code>
Mit dieser Methode können Sie Spaltenoptionen basierend auf den vom Server empfangenen Daten dynamisch festlegen. Es bietet Ihnen außerdem die Flexibilität, komplexere Szenarien zu implementieren, z. B. die Angabe von Spracheinstellungen oder die Verarbeitung einer großen Anzahl von Elementen in einem Auswahlelement.
Das obige ist der detaillierte Inhalt vonWie kann ich indirekte Daten (z. B. Städtenamen aus IDs) in einem jqGrid anzeigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!