3

我们正在尝试使用 HandsonTable 构建一个类似表格的 Excel。出于某种原因, 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;

            }


            });
4

1 回答 1

0

维基

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

为单元格设置新值。要一次更改多个单元格,请将格式更改数组[[row, col, value], ...]作为唯一参数传递。Col 是可见列的索引(注意,如果列被重新排序,将使用当前顺序)

您必须像我一样下载了一个损坏的版本,其中没有方法 setDataAtRowProp 并且 setDataAtCell 采用该方法的参数。

于 2013-03-26T10:47:11.743 回答