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;
}
});