Heim  >  Artikel  >  Web-Frontend  >  Wie behebe ich während der Bearbeitung falsche Optionswerte in jqGrid-abhängigen Auswahlfeldern?

Wie behebe ich während der Bearbeitung falsche Optionswerte in jqGrid-abhängigen Auswahlfeldern?

Susan Sarandon
Susan SarandonOriginal
2024-10-30 17:23:02157Durchsuche

How to Fix Incorrect Option Values in jqGrid Dependent Select Boxes During Editing?

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:

  1. Bearbeitungsoptionen zurücksetzen:

    • Setzen Sie beim Laden der Seite die Bearbeitungsoptionen für das Statusauswahlfeld auf einen statischen Wert.
  2. Datenänderung:

    • Wenn sich das Länderauswahlfeld ändert, setzen Sie die Bearbeitungsoptionen des Statusauswahlfelds auf den statischen Wert zurück.
  3. Auswahlfeld neu erstellen:

    • Erstellen Sie basierend auf dem ausgewählten Land neue Optionen für das Bundesland-Auswahlfeld.
    • Aktualisieren Sie für die Inline-Bearbeitung das Auswahlfeld für die spezifische Zeile.
    • Aktualisieren Sie zum Bearbeiten des Formulars das Auswahlfeld im Bearbeitungsformular.
  4. Statuswerte beibehalten:

    • Nachdem Sie das Land geändert und das Feld zur Auswahl des Bundesstaates neu erstellt haben, stellen Sie sicher, dass der ausgewählte Bundesstaat korrekt wiedergegeben wird, indem Sie den entsprechenden Bearbeitungsoptionswert festlegen.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn