>  기사  >  웹 프론트엔드  >  내 jqGrid 편집 양식에서 상태 선택 상자 옵션 값이 잘못된 이유는 무엇입니까?

내 jqGrid 편집 양식에서 상태 선택 상자 옵션 값이 잘못된 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-01 12:56:02353검색

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

jqgrid가 편집 상자에서 드롭다운 옵션 값을 잘못 선택했습니다.

편집 양식에서 국가 및 주 값을 올바르게 선택했는데도 주 선택 상자에 옵션 값이 표시됩니다. 양식을 편집할 때 올바르지 않습니다. 미국 국가를 선택한 후 영국 국가로 다시 전환해도 이 문제가 지속됩니다.

주 선택 상자의 잘못된 옵션 값 해결 방법

이 문제를 해결하려면 올바른 편집 양식이 로드될 때 선택한 국가 값을 기반으로 주 선택 상자를 채웁니다. 접근 방식은 다음과 같습니다.

  1. dataInit 함수에서 국가 선택을 기반으로 주 값을 채웁니다.
  2. 국가가 변경되면 주 선택 상자를 다시 작성합니다.

코드 솔루션

<code class="javascript">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 &amp;&amp; id !== lastSel) {
            if (lastSel != -1) {
                resetStatesValues();
                grid.restoreRow(lastSel);
            }
            lastSel = id;
        }
    },
    ondblClickRow: function (id, ri, ci) {
        if (id &amp;&amp; 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();
              }
          });</code>

Notes

  • grid.setColProp(...) 메서드는 열 속성을 설정하는 데 사용됩니다.
  • dataInit 함수는 선택 상자를 초기화하고 옵션으로 채우는 데 사용됩니다.
  • dataEvents 배열은 선택 상자에 이벤트 핸들러를 연결하는 데 사용됩니다.

위 내용은 내 jqGrid 편집 양식에서 상태 선택 상자 옵션 값이 잘못된 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.