我正试图通过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>
首先,如果覆盖columns属性,则需要自己设置所有值(例如,请参阅此jsFiddle
要回答关于自动完成的更具体的问题,您需要将自动完成的源定义为类似于以下函数的函数:(另请参阅jsFiddle)
function (query, process){
var msg = getJson(); //this is to simulate an Ajax Call
process(msg.Colors);
}
我认为您需要指定数据属性。这是我的对象源代码(用于数组源http://handsontable.com/demo/datasources.html):
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
}],
...