2013-01-07 20 views
3

我們正試圖使用​​HandsonTable構建一個類似Table的Excel。 出於某種原因,setDataAtCell方法似乎不起作用。 在調試時,我發現數據正在通過此方法正確設置,但在顯示錶格時,未顯示更新的值。我可能正在做一些真正傾倒的東西。你的幫助非常深刻。 以下是代碼:HandonTable setDataAtCell不起作用

  container.handsontable({ 
       data: getChemicalData(), 
       minRows: 5, 
       minCols: 6, 
       minSpareRows: 2, 
       minSpareCols: 0, 
       colHeaders: ["<b>TUBE</b>", "<b>A</b>", "<b>B</b>", "<b>C</b>", "<b>D</b>", "<b>Total in Item, grams</b>"], 
       colWidths: [200,50,50,50,50,100], 
       columns: [ 
        { 
         data: "Effect", 
         type: {editor: Handsontable.AutocompleteEditor }, 
         source: ["RD", "SB", "WG"], 
         strict: true 

        }, 
        { 
         data: "A" 
        }, 
        { 
         data: "B" 
        }, 
        { 
         data: "C" 
        }, 
        { 
         data: "D" 
        }, 
        { 
         data: "TotalInGms", 
         readOnly: true 
        } 

       ], 

      cells: function (row, col, prop) 
      {  
       var cellProperties = {}; 
       if ((row === 0 && col === 0) || (row === 1)) 
       { 
        cellProperties.readOnly = true; 
       } 
       return cellProperties; 
      }, 
      onBeforeChange: function (data) { 


       if (data[0][1] !== "Effect") { 

        if (parseInt(data[0][3]) > 0) { 

        } 
        else { 
         return false; 
        } 
       } 

      }, 
       onChange: function (data, source) { 
       if (source === 'loadData') { 
        return; //don't show this change in console 
       } 

       if (isBypass === true) { 
        return; 
       } 
       var sel = $("#example").handsontable('getSelected'); 
       if (sel != null) { 
        if (sel[0] === 0) { 
         var noOfRows = $("#example").handsontable('countRows'); 
         var totalGmsPerItem = 0; 
         var gmsPerTube = 0; 
         for (var i = 2; i < noOfRows; i++) { 
          gmsPerTube = parseInt($("#example").handsontable('getDataAtCell', i, sel[1])); 
          if (gmsPerTube > 0) { 
           totalGmsPerItem = parseInt(totalGmsPerItem) + gmsPerTube * parseInt(data[0][3]); 
          } 
         } 
         var noOfCols = $("#example").handsontable('countCols'); 

         isBypass = true; 
         $("#example").handsontable('setDataAtCell', 3, 2, totalGmsPerItem); 
         //$("#example").handsontable('setDataAtCell', sel[0],sel[1], 19); 
         isBypass = false; 

        } 
       } 

       return; 

      } 


      }); 

回答

0

wiki

handsontable('setDataAtCell', row, col, value)

設置新值單元格。要一次更改多個單元格,請將格式爲[[row, col, value], ...]的一系列更改作爲唯一參數傳遞。上校是

像我一樣,你必須下載一個破碎的版本可見列(注意,如果列被重新排列,目前的訂單將被使用)的指數在沒有方法setDataAtRowProp和setDataAtCell注意到這一參數方法。