ホームページ > ウェブフロントエンド > jsチュートリアル > レコードを編集するときに、jqGrid の編集フォームの選択ボックスに間違ったオプション値が表示されるのはなぜですか?

レコードを編集するときに、jqGrid の編集フォームの選択ボックスに間違ったオプション値が表示されるのはなぜですか?

DDD
リリース: 2024-11-01 02:43:28
オリジナル
595 人が閲覧しました

Why does the edit form in jqGrid display incorrect option values in select boxes when editing records?

編集ボックスの選択ドロップダウン オプション値が正しくありません

jqGrid でフォーム編集を使用すると、選択ボックスで間違ったオプション値が発生する可能性がありますレコードを編集するとき。具体的には、値が正しい開始値ではなく 0 から始まる可能性があります。

問題の説明

次のシナリオを考えてみましょう:

  • 2 つの選択ボックスが存在します: 国と州。
  • 州選択ボックスのオプションは、選択した国によって異なります。
  • たとえば、「国: 米国 (オプション値=1)」には、値が始まる州オプションがあります。 from 1 ("Alabama: option value=1").

国が英国 (オプション値 = 2)、州がオックスフォード (オプション値 = 6) であるレコードを編集する場合、編集フォームには、最初は正しい国と州が表示されます。ただし、状態選択ボックスが開かれると、オプションの値は不正確になり、0 から始まります。正しいオプションの値は 5 から始まる必要があります。

原因

根本的な原因は、選択ボックスの editoptions の値が初期化中に 1 回しか使用されないことです。 2 番目の選択ボックスのオプションが最初の選択ボックスの値に基づいて動的に設定される場合は、2 番目の選択ボックスのオプションを手動で更新する必要があります。

解決策

この問題を解決するには、次の手順に従います。

  1. 2 番目の選択ボックスの初期オプション値を静的リスト (利用可能なすべての状態など) にリセットします。
  2. When最初の選択ボックスの値が変更されると、選択した国に基づいて 2 番目の選択ボックスのオプションが再構築されます。
  3. dataEvents を使用して、最初の選択ボックスの変更を処理し、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート