Handsontable:如何在渲染函数中更改单元格值

Posted

技术标签:

【中文标题】Handsontable:如何在渲染函数中更改单元格值【英文标题】:Handsontable : how to change cell value in render function 【发布时间】:2015-05-16 05:47:40 【问题描述】:

我有类似的代码:

<script>
$(document).ready(function () 
    var data = @html.Raw(ViewBag.Data);

function sumPreviousValues(instance, td, row, col, prop, value, cellProperties) 
  Handsontable.renderers.TextRenderer.apply(this, arguments);
    td.val = 'SUM SEVERAL PREVIOUS CELLS';


     container = document.getElementById('example1'),
      settings1 = 
        data: data,
        colHeaders: @Html.Raw(ViewBag.TableHeader),
        cells: function (row, col, prop) 
            var cellProperties = ;

            if (col == 16) 
                cellProperties.renderer = sumPreviousValues;
            
    return cellProperties;
        
      ,

    hot = new Handsontable(container,settings1);
    hot.render();

关键是修改函数sumPreviousValues()

但我不知道如何访问td 值?以及是否可以访问其他单元格的值,例如td[index]。 任何想法?我没有在文档中找到选项。

谢谢

【问题讨论】:

【参考方案1】:

我想我明白你想要做什么,这里有一个简单的解决方案:

从自定义渲染器内部,您可以调用:

instance.getDataAtCell(row, col);

这将为您提供row,col 单元格的数据(值)。希望有帮助:)

另外,要访问当前 td 的值,您只需使用 value 变量 :P 查看函数定义。您实际上是在传递它并且可供您使用。

【讨论】:

取决于其余的动手实现的样子。如果它选择了错误的逻辑索引,那么您可以查看文档,了解如何使用他们提供的简单单行来检索物理索引。【参考方案2】:

要限定这个问题,您能否检查传递给sumPreviousValues()td 参数。这将有助于理解这是什么,我假设它是一个 HTML DOM 节点。如果是这样,您可以使用 td.innerHTML

调整它的值

更多信息可以在这里找到: http://www.w3schools.com/jsref/prop_html_innerhtml.asp

【讨论】:

实际上很难使用 DOM 元素引用 Handsontable 中单元格的值,因为它会自动呈现整个表格,因此很难找到任何特定的 td。最好通过HOT提供的instance对象访问数据

以上是关于Handsontable:如何在渲染函数中更改单元格值的主要内容,如果未能解决你的问题,请参考以下文章

Handsontable:在运行时更新单元格渲染器

自定义渲染器功能在 Handsontable 插件中不起作用

如何在jQuery中使用handsontable为特定单元格设置属性?

如何更改 Handsontable 中已更改单元格的颜色?

如何使用 Angular 6 + Handsontable 根据另一个单元格值仅更改一个单元格值?

Handsontable 如何手动将单元格设置为无效