2014-10-06 1 views
1

아약스 (this works)를 통해 데이터를 손 잡이 스프레드 시트 플러그인으로 가져 오려고합니다. 하나의 열에 자동 완성을 수행 할 배열이 있습니다. 내 출력물이 빈 스프레드 시트입니다. "열"부분을 완전히 주석 처리하면 자동 완성 기능없이 완벽하게 작동합니다. 이 점을 이해하도록 도와주세요. 내 코드 :Handsontable - ajax를 통해 데이터를 가져 와서 한 열에 자동 완성 설정

<HTML> 
<HEAD> 
<script src="./lib/jquery.min.js"></script> 
<script src="./dist/jquery.handsontable.full.js"></script> 
<link rel="stylesheet" media="screen" href="./dist/jquery.handsontable.full.css"> 
<script src="./lib/jquery-ui/js/jquery-ui.custom.min.js"></script> 
<link rel="stylesheet" media="screen" href="./lib/jquery-ui/css/ui-bootstrap/jquery-ui.custom.css"> 
<script> 
$(document).ready(function() { 
    first = true; 
    $("#controllers").handsontable 
    ({ 
     autoWrapRow: true, 
     columns:[{},{},{ 
      //type: 'autocomplete', 
      //source: ["A", "B", "C", "D", "E", "F"], 
      //strict: true, 
      //allowInvalid: false //true is default 
     }] 
    }); 
    var controllers = new Array(); 
    $.ajax 
    ({ 
     url:"./get_controllers.php", 
     type:"POST", 
     dataType:"json", 
     success:function(msg) 
     { 
      controllers = msg; 
      $("#controllers").handsontable("loadData", controllers); 
     } 
    }); 
}); 
</script> 
</HEAD> 
<BODY> 
     <div id="controllers" class="dataTable"></div> 
</BODY> 
</HTML> 

답변

0

데이터 속성을 지정해야한다고 생각합니다.

1)로드 데이터 :

$parent.find('button[name=load]').click(function() { 
$.ajax({ 
    url: "/userajax/getmechanic/?id="+pid, 
    type: 'GET', 
    context: document.body 
}).done(function(resp) { 

     jsonObj = JSON.parse(resp); 
     //load data to source 
     objectData = jsonObj.data; 
     $container.handsontable('render'); 
    });}); 

2) 설정 : 모든

function setTable($container){ 
$container.handsontable({ 
    data: objectData, 
    startRows: 5, 

    columns: [ 
     {data: "id", readOnly: true}, 
     { data:"user", 
      type: 'autocomplete', 
      source: users, 
      strict: false 
     }], 
     ... 
1

첫째, 만약 여기 (어레이 소스 http://handsontable.com/demo/datasources.html 용) 객체의 소스 내 코드는 columns 속성을 덮어 쓰면 모든 값을 직접 설정해야합니다 (예 : this를 참조하십시오. jsFiddle

).

가 자동 완성에 대해보다 구체적인 질문에 대답하려면, 이것과 같은 기능으로 자동 완성의 소스를 정의해야

function (query, process){ 
    var msg = getJson(); //this is to simulate an Ajax Call 
    process(msg.Colors); 
} 
(또한 jsFiddle 참조)