"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi les valeurs de l'option de la zone de sélection d'état sont-elles incorrectes dans mon formulaire d'édition jqGrid ?

Pourquoi les valeurs de l'option de la zone de sélection d'état sont-elles incorrectes dans mon formulaire d'édition jqGrid ?

Publié le 2024-11-08
Parcourir:547

Why are the State select box option values incorrect in my jqGrid edit form?

jqgrid sélection incorrecte des valeurs des options déroulantes dans la zone d'édition

Malgré la sélection correcte des valeurs du pays et de l'État dans le formulaire d'édition, les valeurs des options affichées dans la zone de sélection de l'État sont incorrects lorsque le formulaire est modifié. Ce problème persiste même lorsque vous revenez au pays du Royaume-Uni après avoir sélectionné le pays des États-Unis.

Comment résoudre les valeurs d'option incorrectes dans la zone de sélection de l'État

Pour résoudre ce problème, il est nécessaire de correctement remplissez la zone de sélection État en fonction de la valeur du pays sélectionné lors du chargement du formulaire de modification. L'approche consiste à :

  1. Remplir les valeurs d'État en fonction de la sélection du pays dans la fonction dataInit.
  2. Reconstruire la zone de sélection de l'État si le pays est modifié.

Code Solution

var countries = { '1': 'US', '2': 'UK' };
var states = { '1': 'Alabama', '2': 'California', '3': 'Florida', '4': 'Hawaii', '5': 'London', '6': 'Oxford' };
var statesOfCountry = {
    1: { '1': 'Alabama', '2': 'California', '3': 'Florida', '4': 'Hawaii' },
    2: { '5': 'London', '6': 'Oxford' }
};

var resetStatesValues = function () {
    grid.setColProp('State', { editoptions: { value: states} });
};

$("#list").jqGrid({
    data: mydata,
    datatype: 'local',
    colModel: [
        { name: 'Name', width: 200 },
        { 
            name: 'Country', 
            width: 100, 
            editable: true, 
            formatter: 'select',
            edittype: 'select', 
            editoptions: {
                value: countries,
                dataInit: function (elem) {
                    setStateValues($(elem).val());
                },
                dataEvents: [
                    { type: 'change', fn: function (e) { changeStateSelect($(e.target).val(), e.target); } },
                    { type: 'keyup', fn: function (e) { $(e.target).trigger('change'); } }
                ]
            }
        },
        {
            name: 'State', 
            width: 100, 
            editable: true, 
            formatter: 'select',
            edittype: 'select', 
            editoptions: { value: states }
        }
    ],
    onSelectRow: function (id) {
        if (id && id !== lastSel) {
            if (lastSel != -1) {
                resetStatesValues();
                grid.restoreRow(lastSel);
            }
            lastSel = id;
        }
    },
    ondblClickRow: function (id, ri, ci) {
        if (id && id !== lastSel) {
            grid.restoreRow(lastSel);
            lastSel = id;
        }
        resetStatesValues();
        grid.editRow(id, true, null, null, 'clientArray', null,
                        function (rowid, response) {  // aftersavefunc
                            grid.setColProp('State', { editoptions: { value: states} });
                        });
        return;
    },
    editurl: 'clientArray',
    sortname: 'Name',
    height: '100%',
    viewrecords: true,
    rownumbers: true,
    sortorder: "desc",
    pager: '#pager',
    caption: "Demonstrate dependend select/dropdown lists (edit on double-click)"
}).jqGrid('navGrid','#pager', 
          { edit: true, add: true, del: false, search: false, refresh: false },
          { // edit options
              recreateForm:true,
              onClose:function() {
                  resetStatesValues();
              }
          },
          { // add options
              recreateForm:true,
              onClose:function() {
                  resetStatesValues();
              }
          });

Notes

  • La méthode grid.setColProp(...) est utilisée pour définir les propriétés de la colonne.
  • La fonction dataInit est utilisée pour initialiser la zone de sélection et remplissez-la avec des options.
  • Le tableau dataEvents est utilisé pour attacher des gestionnaires d'événements à la zone de sélection.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3