編集ボックスの選択ドロップダウン オプション値が正しくありません
jqGrid でフォーム編集を使用すると、選択ボックスで間違ったオプション値が発生する可能性がありますレコードを編集するとき。具体的には、値が正しい開始値ではなく 0 から始まる可能性があります。
問題の説明
次のシナリオを考えてみましょう:
国が英国 (オプション値 = 2)、州がオックスフォード (オプション値 = 6) であるレコードを編集する場合、編集フォームには、最初は正しい国と州が表示されます。ただし、状態選択ボックスが開かれると、オプションの値は不正確になり、0 から始まります。正しいオプションの値は 5 から始まる必要があります。
原因
根本的な原因は、選択ボックスの editoptions の値が初期化中に 1 回しか使用されないことです。 2 番目の選択ボックスのオプションが最初の選択ボックスの値に基づいて動的に設定される場合は、2 番目の選択ボックスのオプションを手動で更新する必要があります。
解決策
この問題を解決するには、次の手順に従います。
コード例
<code class="javascript">resetStatesValues = function () { grid.setColProp('State', { editoptions: { value: states} }); }; grid.jqGrid({ // ... other configuration options editoptions: { value: countries, dataEvents: [ { type: 'change', fn: function(e) { resetStatesValues(); var countryId = $(e.target).val(); var sc = statesOfCountry[countryId]; var newOptions = ''; for (var stateId in sc) { newOptions += '<option value="' + stateId + '">' + states[stateId] + '</option>'; } if ($(e.target).is('.FormElement')) { var form = $(e.target).closest('form.FormGrid'); $("select#State.FormElement", form[0]).html(newOptions); } else { var row = $(e.target).closest('tr.jqgrow'); var rowId = row.attr('id'); $("select#" + rowId + "_State", row[0]).html(newOptions); } } } ] } });</code>
これらの手順を実装することで、2 番目の選択ボックスのオプション値が、選択された国に基づいて常に正確であることが保証されます。最初の選択ボックス。
以上がレコードを編集するときに、jqGrid の編集フォームの選択ボックスに間違ったオプション値が表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。