2011-05-12 3 views
2

전역 변수 (codata)의 배열을 editoptions (jqGrid)의 옵션 배열로 전달하려고했습니다.Array (json)가 jqGrid의 editoptions 매개 변수에 전달되지 않음

--------- countries_list.php 다음 JSON 배열을 던졌습니다 ----- -----------

["ABU","AD","AE","AF" .... "ZA","ZM","ZW"] 

다음과 같이 내 코드 서 ---- PHP 스크립트 (jqGrid 코드 포함) ----------

jQuery(document).ready(function(){ 

      var codata = new Array(); 

      $.getJSON('countries_list.php', function(list){ 
       $.each(list, function(val) { 
        codata.push("'"+val+"'"); 
        # --- Here alert() displays 'codata' with all the elements --- 
       }); 
      }); 

      $("#datatable").jqGrid({ 
       ...... 
       // some code until colMode specs 
       ...... 
       { name:'guco', 
         index:'guco', 
         edittype:'select', 
         width:90, 
         editable: true, 
         editoptions: { 
          formatter:'select', 
          value: codata # --- array is not passed, it comes empty --- 
         }, 
         sortable: true, 
         resizable: false 
        }, 
     ..... 

--------- jqGrid 코드가있는 PHP 스크립트 ----------

사전에이 문제를 해결하는 방법에 대한 힌트는?, 고맙습니다.

마리오 Benitez.- 내가 당신의 PHP 스크립트가 유효 JS 배열이 아닌 JSON 객체를 전달하고 보는 것과

답변

0

. 내가 buildSelect 대신 editoptionsvalue과 함께 dataUrl을 사용하도록 추천 할 수있는 가장 로직 것은 $("#datatable").jqGrid({ ... editoptions: { value: list } ... });

+0

비동기 작업으로 인해 배열에 데이터를 저장하는 데 문제가 발생할 수 있습니다. –

+0

사실 비동기식 'codata'는 참조 할 시간이 정의되지 않았기 때문에 콜백입니다. – Zlatev

0

을 할당 아약스 콜백 내부에있는 jqGrid를 호출하는 것입니다. the answer의 "UPDATED"부분에 해당 코드 예제 buildSelect이 있습니다.

+0

나는 가까운 장래에 필요할 것이기 때문에 나는 '대답'링크를 유지할 것이다. 나는 해결책을 게시 할 것이다. –

2

고맙습니다. 여러분 모두에게 고맙습니다. 다음과 같은 문제가 수정되었습니다 :

나는해서 getJSON은 '비동기 모드'(I이의 jQuery 안돼서) 문제를 해결하기 위해 코드를 작동 발견 (대한 책을 읽은)이었다하십시오 고맙습니다

jQuery(document).ready(function(){ 

     var codata = (function() { 
      var list = null; 

      $.ajax({ 
       'async': false, 
       'global': false, 
       'url': 'countries_list.php', 
       'dataType': 'json', 
       'success': function (data) { 
        list = data; 
       } 
      }); 

      return list; 
     })(); 

     $("#datatable").jqGrid({ 
      ... jqGrid settings ... 
      colModel: [ 
       .... 
       { name:'guco', 
        index:'guco', 
        edittype:'select', 
        width:90, 
        editable: true, 
        editoptions: { 
         value: codata 
        }, 
        sortable: true, 
        resizable: false 
       }, 
       .... 

제비 뽑기가 다시 한번, 나는 이것이 다른 누군가에게 도움이되기를 바랍니다.

마리오 베니테스.

0

두 가지 방법을 시도했으며 Olegs 링크에서 제공된 답변이 도움이되었습니다. buildSelect 매개 변수를 사용하면 값을 완전히 제어 할 수 있습니다. value 메소드를 사용할 때 0 - n의 정수 값을 할당했습니다. 또한이 패러다임에서 고유 한 CSS 클래스를 할당 할 수도 있습니다. buildSelect/dataurl에 +1.

관련 문제