> 백엔드 개발 > C++ > 내 ASP.NET MVC jqGrid 드롭다운에 '정의되지 않은' 값이 표시되는 이유는 무엇입니까?

내 ASP.NET MVC jqGrid 드롭다운에 '정의되지 않은' 값이 표시되는 이유는 무엇입니까?

DDD
풀어 주다: 2025-01-11 08:45:42
원래의
966명이 탐색했습니다.

Why Does My ASP.NET MVC jqGrid Dropdown Show an

ASP.NET MVC jqGrid 드롭다운에서 "정의되지 않은" 값 해결

데이터 편집 중에 jqGrid 드롭다운을 동적으로 채울 때 원하지 않는 "정의되지 않은" 값이 자주 나타납니다. 이는 jqGrid가 기대하는 데이터 구조와 데이터 전달 방식의 불일치에서 비롯됩니다.

올바른 jqGrid 데이터 형식:

드롭다운 값의 이상적인 형식은 다음과 같습니다. value: "FE:FedEx; IN:InTime; TN:TNT"

현재 방법의 문제:

현재 접근 방식에서는 ASP.NET MVC와 jQuery의 $.ajax()을 사용하여 드롭다운 데이터를 가져옵니다. StringBuilder는 jqGrid의 형식과 일치하도록 검색된 데이터를 조작하지만 추가 "정의되지 않은" 항목이 지속됩니다.

디버깅 결과:

FireBug 디버깅은 sb.ToString()에서 도입한 추가 인용문이 원인임을 나타냅니다. jqGrid는 자체 따옴표를 추가하여 이중 따옴표 및 "정의되지 않은" 문제를 발생시킵니다.

우수한 솔루션: dataUrlbuildSelect

사용

value 속성을 ​​직접 조작하는 대신 dataUrl 또는 buildSelect 내에서 jqGrid의 editoptionssearchoptions 속성을 ​​사용하는 것이 보다 강력한 솔루션입니다. 이를 통해 맞춤형 데이터 가져오기 및 형식 지정이 가능합니다.

dataUrl 액션:

<code class="language-csharp">public JsonResult GetDestinationList() {
    List<string> allDestinations = GetAllDestinations();
    return Json(allDestinations, JsonRequestBehavior.AllowGet);
}</code>
로그인 후 복사

buildSelect 기능:

<code class="language-javascript">buildSelect: function(data) {
    var s = '';
    if (data && data.length) {
        for (var i = 0, l = data.length; i < l; i++) {
            s += data[i] + ';'; // Assuming data[i] is already in "key:value" format
        }
        return s.substring(0, s.length - 1); // Remove trailing semicolon
    }
    return s;
}</code>
로그인 후 복사

업데이트됨 editoptions:

<code class="language-javascript">{
    name: 'destinations',
    editable: true,
    edittype: 'select',
    editoptions: {
        dataUrl: '/YourController/GetDestinationList', // Replace with your controller action path
        buildSelect: function(data) {
            // ... (buildSelect function from above) ...
        }
    }
}</code>
로그인 후 복사

중요 사항:

  • Json(allDestinations); 없이 JsonRequestBehavior.AllowGet을 사용할 수 있지만 jqGrid 옵션에 ajaxSelectOptions: { type: "POST" }를 추가해야 합니다.
  • 최신 jqGrid 버전에서는 buildSelect$.ajax() 성공 핸들러 내에서 호출되므로 jQuery.parseJSON(data.responseText)가 불필요해집니다.

이 개정된 접근 방식은 jqGrid 드롭다운 관리를 위한 더 명확하고 효율적이며 오류가 덜 발생하는 방법을 제공하여 "정의되지 않은" 값 문제를 제거합니다. /YourController/GetDestinationList을 컨트롤러 작업의 실제 경로로 바꾸는 것을 잊지 마세요.

위 내용은 내 ASP.NET MVC jqGrid 드롭다운에 '정의되지 않은' 값이 표시되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿