首頁 > 後端開發 > C++ > 為什麼我的 ASP.NET MVC $.post 呼叫 jqGrid 在下拉清單中傳回未定義的值?

為什麼我的 ASP.NET MVC $.post 呼叫 jqGrid 在下拉清單中傳回未定義的值?

Patricia Arquette
發布: 2025-01-11 08:49:43
原創
999 人瀏覽過

Why is my ASP.NET MVC $.post Call to jqGrid Returning an Undefined Value in the Dropdown?

對 ASP.NET MVC 和 jqGrid 下拉清單填滿問題進行故障排除

問題: 使用 ASP.NET MVC 2 $.ajax() 呼叫動態填入時,jqGrid 下拉清單中出現意外的「未定義」值。這是由於返回網格的資料格式不正確所造成的。 jqGrid 需要下拉值的特定格式,例如:"FE:FedEx; IN:InTime; TN:TNT"。 使用 StringBuilder 進行資料格式化會產生額外的引號和尾隨分號。

分析:最初的方法使用ContentResult(sb.ToString())傳回資料。雖然功能齊全,但效率較低且容易出現格式錯誤。

解決方案: 利用 dataUrlbuildSelect 中 jqGrid 的 editoptionssearchoptions 屬性提供了更乾淨、更強大的解決方案。 這消除了手動字串格式化。 dataUrl 指定資料來源,buildSelect 處理格式。

使用 dataUrlbuildSelect 的範例:

<code class="language-javascript">{ 
    name: 'destinations', 
    editable: true, 
    edittype: 'select',
    editoptions: { 
        dataUrl: '<%= Url.Action("GetDestinationList", "Home") %>',
        buildSelect: function(response) {
            var s = '';
            if (response && response.length) {
                for (var i = 0; i < response.length; i++) {
                    s += response[i] + ';'; //Note the semicolon placement
                }
            }
            return s; // Removed trailing ""
        }
    }
}</code>
登入後複製

HTTP 方法注意事項:

如果 dataUrl 優先使用 POST 請求而不是 GET,請在伺服器端將 Json(allDestinations, JsonRequestBehavior.AllowGet) 替換為 Json(allDestinations) 並將 ajaxSelectOptions: { type: "POST" } 新增至 jqGrid 選項。

最佳化buildSelect功能:

提供的 buildSelect 函數可以稍微最佳化以提高清晰度和效率(儘管功能與原始函數類似):

<code class="language-javascript">buildSelect: function(response) {
    return (response && response.length) ? response.join(';') : '';
}</code>
登入後複製

這種修改後的方法提供了一種更易於維護且不易出錯的方法來填入 jqGrid 下拉清單。

以上是為什麼我的 ASP.NET MVC $.post 呼叫 jqGrid 在下拉清單中傳回未定義的值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板