2013-05-16 42 views
1

我想將字符串數組分配給handsontables列作爲自動完成。我從AJAX調用中獲取這個JSON數據。在JavaScript中將字符串數組從JSON分配給Handsontables對象?

我不會分配到source:。請按照代碼。

var loadBU = function(data) {   
       $.ajax({ 
       url: "/EditInitiatives.svc/GetBUData", 
       data: "clientId=" + $value.val(), 
       type: "GET", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function (res) {      
        data(res); 
       }, 
       error: function (error) { 
        alert("Error: " + error.responseText); 
       } 
       });  
       };  

    $("#example2").handsontable({ 
     data: getCarData(), 
     startRows: 7, 
     startCols: 4, 
     columns: [ 
        { data:'BusinessUnit', 
        type:'autocomplete', 
        source:loadBU(function(output){        
           var results = output.d       
           var arr = [], item; 
           for (var i = 0, len = results.length; i < len; i++) { 
            item = results[i]; 
            arr.push([[item]]); 
           } 
           return arr; 
          }),  
         strict: true 
        }, 
       ] 
     }); 

它想是這樣的EX: source: ["yellow", "red", "orange", "green", "blue", "gray", "black", "white"],

enter image description here

我不明白怎麼陣列分配到源。

Reference

回答

0

你的 「迴歸改編;」不返回到「source:」,它返回到「loadBU」函數。

例如,你可以這樣做:

   success: function (res) {      
       var arr = data(res); 
      }, 

這就是爲什麼它沒有被分配。

嘗試$("#example2").handsontable({之前,讓您的Ajax調用並將其保存到someVariable,然後設置source: someVariable

取決於你的Ajax調用返回時,你可能還需要進行一些操作。例如,我需要遍歷並加載到一個數組:

function AppendToArray(ajaxValues, theArray) { 
    for (var i = 0; i < ajaxValues.length; i++) { 
     theArray.push('' + ajaxValues[i].Text + ''); 
    } 
} 

我希望這有助於

0

我使用這樣的:

var workers = null; 
$.ajax({ 
    url: siteUrl + "/Worker/Get", 
    dataType: 'json', 
    type: 'GET', 
    cache: false 
}) 
.done(function (data) { 
    $("#worker-grid").handsontable({ 
     data: data, 
     rowHeaders: true, 
     colHeaders: ["internal<BR />identification", "name", "mobile", "e-mail address", "national<BR />identification", "partner", "source"], 
     colWidths: [100, 150, 100, 250, 150, 150, 100], 
     columns: [ 
      { data: "intId" }, 
      { data: "name" }, 
      { data: "mobile" }, 
      { data: "mail" }, 
      { data: "extId" }, 
      { 
       data: "partner", type: 'dropdown', source: function (query, process) { 
        $.ajax({ 
         url: siteUrl + "/Partner/Get", 
         dataType: 'json', 
         type: 'GET', 
         cache: false 
        }) 
        .done(function (data) { 
         var values = []; 
         for (i in data) values.push(data[i].name); 
         process(values); 
        }); 
       } 
      }, 
      { data: "source" } 
     ], 
     columnSorting: true, 
     minSpareRows: 1 
    }); 
    workers = $("#worker-grid").data("handsontable"); 
}); 

在分配給所述源的關鍵是源函數中的進程參數。

但是我想補充一點,然而這種方法會在每次使用時從服務器獲取數據。我上面的例子使用了一個沒有意義的下拉列表。但是這是使用自動完成時的正確方法。

相關問題