jqGrid bietet einen „select“-Formatierer zur Anzeige indirekter Daten. Allerdings weist dieser Formatierer Einschränkungen hinsichtlich der dynamischen Fülloptionen auf. Um dieses Problem zu lösen, kann die JSON-Antwort vom Server um zusätzliche Daten erweitert werden, die zum Auffüllen der Auswahloptionen verwendet werden.
Ursprüngliche Frage:
Die Datenstruktur ist wie folgt:
SID | SNAME | CITY |
---|---|---|
1 | ABC | 11 |
2 | XYZ | 12 |
3 | ACX | 13 |
4 | KHG | 14 |
5 | ADF | 15 |
6 | KKR | 16 |
Eine weitere Tabelle enthält Städtenamen:
CID | CNAME |
---|---|
11 | Chennai |
12 | Mumbai |
13 | Delhi |
Das Ziel besteht darin, die Daten wie folgt anzuzeigen:
SID | SNAME | CITY |
---|---|---|
1 | ABC | Chennai |
2 | XYZ | Mumbai |
3 | ACX | Delhi |
4 | KHG | Banglore |
5 | ADF | Hyderabad |
6 | KKR | Kolkatta |
Lösung mit erweiterter JSON-Antwort:
Der Server kann die JSON-Antwort um ein „cityMap“-Attribut erweitern, das Stadt-IDs Städtenamen zuordnet:
<code>{ "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>
jqGrid-Konfiguration:
<code>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>
Dieser Ansatz ermöglicht das dynamische Auffüllen von Auswahloptionen basierend auf Daten vom Server. Es kann auch verwendet werden, um andere Spaltenoptionen basierend auf Serverdaten dynamisch festzulegen.
Das obige ist der detaillierte Inhalt vonWie fülle ich jqGrid-Auswahloptionen mithilfe erweiterter JSON-Antworten dynamisch auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!