Abhängige Auswahlfeldoptionen im jqGrid-Bearbeitungsformular
jqGrid ermöglicht Ihnen die Erstellung dynamischer Auswahlfelder zum Bearbeiten von Formularen, wobei die Optionen von der Bearbeitungsform abhängen Auswahl, die in einem zugehörigen Auswahlfeld getroffen wurde. Dies ist nützlich für Szenarien wie die Auswahl eines Landes und das entsprechende Ausfüllen der Bundesstaatenoptionen.
Problem: Falsche Optionswerte
Beim Bearbeiten eines Datensatzes mit a tritt jedoch ein Problem auf Dynamisch gefülltes Statusauswahlfeld. Die Optionswerte des Statusauswahlfelds beginnen bei 0 statt beim erwarteten Wert von 5.
Lösung: Bearbeitungsoptionen zurücksetzen und manuell neu erstellen
Um dieses Problem zu beheben, muss der Der Schlüssel besteht darin, zu verstehen, dass jqGrid Editoptions bei der Initialisierung nur einmal verwendet. Um das Auswahlfeld für den Bundesstaat basierend auf dem ausgewählten Land korrekt auszufüllen, müssen die Bearbeitungsoptionen zurückgesetzt und das Auswahlfeld manuell neu erstellt werden.
So wird die Lösung implementiert:
Bearbeitungsoptionen zurücksetzen:
Datenänderung:
Auswahlfeld neu erstellen:
Statuswerte beibehalten:
Codeausschnitt:
<code class="javascript">// Reset the editoptions for the state select box var resetStatesValues = function () { grid.setColProp('State', { editoptions: { value: states}}); }; // Build new options for the state select box based on the selected country var changeStateSelect = function (countryId, countryElem) { var sc = statesOfCountry[countryId]; var newOptions = '<option value="">All</option>'; // If needed for (stateId in sc) { newOptions += '<option value="' + stateId + '">' + states[stateId] + '</option>'; } grid.setColProp('State', { editoptions: { value: statesOfCountry[countryId]} }); if ($(countryElem).is('.FormElement')) { // Form editing $(countryElem).closest('form.FormGrid').find("select#state.FormElement").html(newOptions); } else { // Inline editing var row = $(countryElem).closest('tr.jqgrow'); var rowId = row.attr('id'); $("select#" + rowId + "_State", row[0]).html(newOptions); } };</code>
Fazit
Durch Zurücksetzen der Bearbeitungsoptionen, manuelles Neuerstellen des Statusauswahlfelds und Beibehalten des ausgewählten Statuswerts können Sie dies erreichen Stellen Sie sicher, dass das Bearbeitungsformular in jqGrid die richtigen Optionswerte für abhängige Auswahlfelder anzeigt.
Das obige ist der detaillierte Inhalt vonWie behebe ich während der Bearbeitung falsche Optionswerte in jqGrid-abhängigen Auswahlfeldern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!