」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 為什麼我的 jqGrid 編輯表單中的狀態選擇框選項值不正確?

為什麼我的 jqGrid 編輯表單中的狀態選擇框選項值不正確?

發佈於2024-11-08
瀏覽:328

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

jqgrid 在編輯框中選擇下拉選項值不正確

儘管在編輯表單中正確選擇了“國家/地區”和“州”值,但“州」選擇框中顯示的選項值編輯表格時不正確。即使在選擇美國國家/地區後切換回英國國家/地區,此問題仍然存在。

如何解決「州」選擇框中不正確的選項值

要解決此問題,需要正確載入編輯表單時,根據所選國家/地區值填入州選擇框。此方法涉及:

  1. 根據 dataInit 函數中的國家選擇填入州值。
  2. 如果國家更改,則重建州選擇框。

代碼解決方案

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();
              }
          });

註解

  • grid.setColProp(...)方法用來設定列屬性。
  • dataInit函數用於初始化選擇框並用選項填充它。
  • dataEvents 陣列用於將事件處理程序附加到選擇框。
最新教學 更多>
  • 如何在 Python 中以空格分割字串,同時保留引用的子字串?
    如何在 Python 中以空格分割字串,同時保留引用的子字串?
    在Python 中按空格分割字串同時保留帶引號的子字串處理同時包含空格和帶引號的子字符當字串的字串時,可能會遇到困難準確地分割字串,同時保持引用部分的完整性。在 Python 中,shlex 模組為此特定場景提供了解決方案。 使用shlex.split() 保留引號shlex.split() 函數可...
    程式設計 發佈於2024-11-08
  • 如何使用 Selenium 在 Google Chrome 模擬 Microsoft Edge Mobile?
    如何使用 Selenium 在 Google Chrome 模擬 Microsoft Edge Mobile?
    使用Selenium 更改Google Chrome 中的用戶代理在Selenium 自動化腳本中,為瀏覽器視窗設定特定的用戶代理對於模擬設備行為和確保網站渲染至關重要正如預期的那樣。在這種情況下,我們的目標是將 Google Chrome 中的使用者代理程式修改為 Microsoft Edge M...
    程式設計 發佈於2024-11-08
  • NPM 對等依賴關係深入:全面介紹
    NPM 對等依賴關係深入:全面介紹
    作為 Javascript 開發者,我們都知道專案中存在兩種不同的依賴關係,dependency 和 devDependency,但是peerDependency 又如何呢? 在本系列中,我們將研究 Javascript 中這種較不常見的依賴關係。我們將研究它們是什麼,作為圖書館使用者我需要了解什...
    程式設計 發佈於2024-11-08
  • 哪種 MySQL 取得函數適合您的 PHP 應用程式:`mysql_fetch_array`、`mysql_fetch_assoc` 和 `mysql_fetch_object` 的比較
    哪種 MySQL 取得函數適合您的 PHP 應用程式:`mysql_fetch_array`、`mysql_fetch_assoc` 和 `mysql_fetch_object` 的比較
    比較mysql_fetch_array、mysql_fetch_assoc 和mysql_fetch_object:綜合分析mysql 函數系列在從MySQL 函式中擷取結果起至關重要的查詢作用在PHP 中。在這些函數中,mysql_fetch_array、mysql_fetch_assoc 和 m...
    程式設計 發佈於2024-11-08
  • Lerna – Monorepo 管理的關鍵
    Lerna – Monorepo 管理的關鍵
    歡迎回到莫諾雷波城堡! 現在城堡已經建成,每個房間(項目)都已就位。但如果沒有正確的管理,事情可能會變得混亂。誰來幫助城堡順利運作?這時勒納登場了──一位強大的巫師,擁有神奇的命令,可以讓一切保持秩序。 Lerna 是您在 monorepo 土地上的嚮導,確保所有房間(項目)同步,所有包都鏈接,...
    程式設計 發佈於2024-11-08
  • 如何在 PHP 中循環嵌套數組並顯示特定值?
    如何在 PHP 中循環嵌套數組並顯示特定值?
    PHP foreach 與嵌套數組:綜合指南在 PHP 中,瀏覽嵌套數組可能是常見的挑戰。本討論重點討論特定場景,您的目標是顯示嵌套數組的子集,特別是第二個嵌套數組中的值。 將foreach 與嵌套數組結合使用要使用foreach 處理嵌套數組,您可以使用以下命令方法:]範例:$tmpArray =...
    程式設計 發佈於2024-11-08
  • 提升 Web 效能:前端開發人員指南
    提升 Web 效能:前端開發人員指南
    大家好!自从我上次写博客以来已经有一段时间了,我承认,这让我有点难过。现实是,有太多东西需要学习,有时感觉永远没有足够的时间来深入了解所有内容。我在跟谁开玩笑呢?事实是,我最近拖延得很厉害。 但最近,我一直在探索网络性能——这对于任何前端开发人员来说都是一个至关重要的话题——我很高兴分享我所学到的东...
    程式設計 發佈於2024-11-08
  • 如何利用先進的加密技術增強資料保護?
    如何利用先進的加密技術增強資料保護?
    對稱金鑰加密:FernetPython 擁有強大的加密庫,提供Fernet,這是一種安全、最佳實踐的加密方案。 Fernet 採用 AES CBC 加密、HMAC 簽章以及版本和時間戳記資訊來保護資料。建議使用 Fernet.generate_key() 產生金鑰。 from cryptograph...
    程式設計 發佈於2024-11-08
  • 什麼是本地主機?本地主機作為開發人員的用途
    什麼是本地主機?本地主機作為開發人員的用途
    您有沒有想過當開發人員在將網站上線之前測試網站時會發生什麼?或者網路管理員如何檢查他們的系統是否正常運作?答案在於一個強大但經常被誤解的概念,稱為 localhost。讓我們深入了解 localhost 是什麼、為何它很重要以及它如何變得非常有用。 什麼是本地主機? 用最簡單的術語...
    程式設計 發佈於2024-11-08
  • 為什麼 Debian 和 Ubuntu Docker 容器之間的標準輸出緩衝不同?
    為什麼 Debian 和 Ubuntu Docker 容器之間的標準輸出緩衝不同?
    Docker 容器中的標準輸出緩衝:Debian 與Ubuntu 的案例在Docker 容器中執行程式碼時,標準輸出緩衝可能會發生在某些情況下,但在其他情況下則不然。在使用 io.MultiWriter 將 stdout 定向到控制台和日誌檔案的情況下會出現此問題。 根本原因:平台差異根本原因造成此...
    程式設計 發佈於2024-11-08
  • 語意HTML
    語意HTML
    語意 HTML 是 HTML 的一部分,可協助您以維護和 SEO 友善的方式組織您的網站。 SEO 代表:搜尋引擎優化。 當您在建立網站時遵循 HTML 語意時,網站往往會更容易被搜尋引擎排名更高,當然也能讓螢幕閱讀器更輕鬆地瀏覽您的網站。 以下是一些語意 HTML 標籤: 1- 「標題」標籤...
    程式設計 發佈於2024-11-08
  • 如何在單一 FastAPI 端點中處理表單和 JSON 資料?
    如何在單一 FastAPI 端點中處理表單和 JSON 資料?
    如何建立可以接受表單或 JSON 正文的 FastAPI 端點? 在 FastAPI 中,您可以建立可以接受表單或 JSON 正文的端點使用不同的方法。以下是幾個選項:選項1:使用依賴函數此選項涉及建立一個依賴函數,該函數檢查Content-Type 請求標頭的值並使用Starlette 的方法解析...
    程式設計 發佈於2024-11-08
  • 如何在 Golang 中合併多個映射,同時避免重複值?
    如何在 Golang 中合併多個映射,同時避免重複值?
    在Golang 中合併映射問題:合併多個映射,保留與跨映射中的相同鍵關聯的值。 初始方法:提供的程式碼嘗試透過迭代每個映射來合併映射,根據匹配鍵將值新增至結果映射。但是,此方法不處理結果映射中的重複值。 簡單合併:可以透過將值附加到切片來實現修改後的合併函數來處理重複項與結果映射中的鍵關聯。 fu...
    程式設計 發佈於2024-11-08
  • 將 ZingGrid 連接到 Supabase:在幾分鐘內新增後端
    將 ZingGrid 連接到 Supabase:在幾分鐘內新增後端
    從我在 Zing 部落格上的文章中交叉發布。 Supabase 是一個開源 Firebase 替代品。他們提供多種服務,但出於本文的目的,我們將深入探討它如何充當網格的簡單後端。 初始設定 在開始設定網格之前,我們需要在 Supabase 方面執行幾個步驟。 1...
    程式設計 發佈於2024-11-08
  • 如何在水平行中建立重疊的 Flex 項目?
    如何在水平行中建立重疊的 Flex 項目?
    創建重疊的 Flex 項目創建可能超出可用寬度的水平行 Flex 項目時,通常需要讓它們重疊。預設情況下,Flexbox 會縮小項目以適合容器。 Flexbox 方法要實現重疊,我們可以使用以下方法: overflow: visible;}.card { width: 10em; min-width...
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3