HandsonTable setDataAtCell 不起作用

Posted

技术标签:

【中文标题】HandsonTable setDataAtCell 不起作用【英文标题】:HandonTable setDataAtCell not working 【发布时间】:2012-12-21 11:14:02 【问题描述】:

我们正在尝试使用 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;

            


            );

【问题讨论】:

【参考方案1】:

来自wiki:

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

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

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

【讨论】:

以上是关于HandsonTable setDataAtCell 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何使用复选框来选中或取消选中所有框到handsontable

Handsontable 中的 Handsontable 下拉高度调整

从 CSV 导入到 HandsOnTable 并从 HandsOnTable 导出到 CSV

Handsontable 无法正确渲染?

Handsontable 中更新内容数据的问题

像性能一样复制 Google 表格(handsontable)