2014-10-06 263 views
1

我試圖通過ajax(這項工作)將數據拖入到可安裝的電子表格插件中。我有一個數組,我想在一列上自動完成。我的輸出是一個空白的電子表格。如果我完全註釋掉了「列」部分,它完美地工作 - 沒有自動完成。請幫我弄清楚這一點。這是我的代碼: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

我想你需要指定數據屬性。這是我的對象源代碼(陣列源http://handsontable.com/demo/datasources.html):設置

$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)::

1)負載數據

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

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

首先,如果您覆蓋列屬性,那麼您需要自己設置所有值(例如,請參見jsFiddle

要獲得關於自動完成更具體的問題,您需要定義自動完成的來源是類似這樣的功能:(見jsFiddle

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