首頁  >  文章  >  web前端  >  為什麼我的 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>

註解

  • grid.setColProp(...) 方法用於設定列屬性。
  • dataInit函數用於初始化選擇框並用選項填充它。
  • dataEvents 陣列用於將事件處理程序附加到選取框。

以上是為什麼我的 jqGrid 編輯表單中的狀態選擇框選項值不正確?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn